增加初始版本
diff --git a/webapps/docs/BUILDING.txt b/webapps/docs/BUILDING.txt
new file mode 100644
index 0000000..f5da5cc
--- /dev/null
+++ b/webapps/docs/BUILDING.txt
@@ -0,0 +1,407 @@
+================================================================================
+ 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.
+================================================================================
+
+$Id: BUILDING.txt 1457383 2013-03-17 06:22:36Z kkolinko $
+
+ ====================================================
+ Building The Apache Tomcat 7.0 Servlet/JSP Container
+ ====================================================
+
+This subproject contains the source code for Tomcat 7.0, a container that
+implements the Servlet 3.0 and JSP 2.2 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.
+Read RUNNING.txt for the instruction on how to run it.
+
+In order to build a binary distribution version of Apache Tomcat from a
+source distribution, do the following:
+
+
+(1) Download and Install a Java Development Kit
+
+ 1. If the JDK is already installed, skip to (2).
+
+ 2. Download a version 6 of 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.
+
+ 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.
+
+ 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.
+
+ See Apache Commons DBCP project web site for more details on
+ available versions of the library and its requirements,
+
+ http://commons.apache.org/dbcp/
+
+ 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).
+
+ 3. Install the JDK according to the instructions included with the release.
+
+ 4. Set an environment variable JAVA_HOME to the pathname of the directory
+ into which you installed the JDK release.
+
+
+(2) Install Apache Ant 1.8.x on your computer
+
+ 1. If Apache Ant 1.8.x is already installed on your computer, skip to (3).
+
+ 2. Download a binary distribution of Ant 1.8.x from:
+
+ http://ant.apache.org/bindownload.cgi
+
+ 3. Unpack the binary distribution into a convenient location so that the
+ Ant release resides in its own directory (conventionally named
+ "apache-ant-[version]").
+
+ For the purposes of the remainder of this document, the symbolic name
+ "${ant.home}" is used to refer to the full pathname of the release
+ directory.
+
+ 4. Create an ANT_HOME environment variable to point the directory
+ ${ant.home}.
+
+ 5. Modify the PATH environment variable to include the directory
+ ${ant.home}/bin in its list. This makes the "ant" command line script
+ available, which will be used to actually perform the build.
+
+
+(3) Building Tomcat 7.0
+
+(3.1) Checkout or obtain the source code for Tomcat 7.0
+
+Checkout the source using SVN, selecting a tag for released version or
+trunk for the current development code, or download and unpack a source
+package.
+
+ * Tomcat SVN repository URL:
+
+ http://svn.apache.org/repos/asf/tomcat/tc7.0.x/trunk/
+
+ * Source packages can be downloaded from:
+
+ http://tomcat.apache.org/download-70.cgi
+
+The location where the source has been placed will be further referred as
+${tomcat.source}.
+
+(3.2) Building
+
+ 1. The build is controlled by creating a ${tomcat.source}/build.properties
+ file.
+
+ It is recommended to always create the file, because of unfortunate
+ default value of base.path property. You may start with the following
+ content for the file:
+
+ # ----- Default Base Path for Dependent Packages -----
+ # Replace this path with the directory path where dependencies binaries
+ # should be downloaded
+ base.path=/home/me/some-place-to-download-to
+
+ 2. Configure base.path property by adding it to the
+ ${tomcat.source}/build.properties file.
+
+ The base.path property specifies the place where Tomcat dependencies
+ required by the build are downloaded. It is recommended to place this
+ directory outside of the source tree, so that you do not waste your
+ time re-downloading the libraries.
+
+* WARNING: The default value of base.path property makes the build script
+ to 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. Even if you do have access to
+ that directory, it is likely not appropriate for you to write there.
+
+ On Windows this usually corresponds to the "C:\usr\share\java"
+ directory, unless Cygwin is used.
+
+* 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.
+
+ 3. Go to the sources directory and run Ant:
+
+ cd ${tomcat.source}
+ ant
+
+ This will execute the "deploy" target in build.xml.
+
+ Once the build has completed successfully, a usable Tomcat installation
+ will have been produced in the ${tomcat.source}/output/build directory,
+ and can be started and stopped with the usual scripts.
+
+ Note that the build includes Tomcat documentation, which can be found
+ in the output/build/webapps/docs directory.
+
+ The path of the output directory can be controlled by specifying the
+ "tomcat.output" property in the build.properties file.
+
+* NOTE: Do not run the build as the root user. Building and running Tomcat
+ does not require root privileges.
+
+
+(4) Updating sources and rebuilding
+
+It is recommended that you regularly update the downloaded Tomcat 7.0
+sources using your SVN client.
+
+For a quick rebuild of only modified code you can use:
+
+ cd ${tomcat.source}
+ ant
+
+
+(5) Special builds
+
+There are several targets in Tomcat build files that are useful to be
+called separately. They build components that you may want to build
+quickly, or ones that are included in the full release and are not built
+during the default "deploy" build.
+
+(5.1) Building documentation
+
+The documentation web application is built during the default "deploy"
+build.
+
+It can be built quickly by using the following commands:
+
+ cd ${tomcat.source}
+ ant build-docs
+
+The output of this command will be found in the following directory:
+
+ output/build/webapps/docs
+
+
+The API documentation (Javadoc) is built during a "release" build. It is
+easy to build it separately by using the following commands:
+
+ cd ${tomcat.source}
+ ant javadoc
+
+The output of this command will be found in the following directories:
+
+ output/dist/webapps/docs/api
+ output/dist/webapps/docs/elapi
+ output/dist/webapps/docs/jspapi
+ output/dist/webapps/docs/servletapi
+
+
+(5.2) Building the extras (commons-logging, webservices etc.)
+
+These components are documented on the "Additional Components"
+(extras.html) page of documentation. They are built during a "release"
+build.
+
+You can build them by using the following commands:
+
+ cd ${tomcat.source}
+ ant extras
+
+(5.3) Building the embedded packages
+
+These are built during a "release" build.
+
+You can build them by using the following commands:
+
+ cd ${tomcat.source}
+ ant embed
+
+
+(6) Building a full release (as provided via the ASF download pages)
+
+ 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.
+
+
+(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
+
+
+(7.3) Other configuration options
+
+ 1. 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
+
+ 2. 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
+
+ 3. It is possible to configure formatter used by JUnit reports. For
+ example the following property disables generation of separate report
+ files:
+
+ junit.formatter.usefile=false
+
+
+(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/webapps/docs/RELEASE-NOTES.txt b/webapps/docs/RELEASE-NOTES.txt
new file mode 100644
index 0000000..6681668
--- /dev/null
+++ b/webapps/docs/RELEASE-NOTES.txt
@@ -0,0 +1,228 @@
+================================================================================
+ 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.
+================================================================================
+
+$Id: RELEASE-NOTES 1189163 2011-10-26 12:19:26Z kkolinko $
+
+
+ Apache Tomcat Version 7.0.42
+ Release Notes
+
+
+=========
+CONTENTS:
+=========
+
+* Dependency Changes
+* API Stability
+* JNI Based Applications
+* Bundled APIs
+* Web application reloading and static fields in shared libraries
+* Tomcat on Linux
+* Enabling SSI and CGI Support
+* Security manager URLs
+* Symlinking static resources
+* Viewing the Tomcat Change Log
+* Cryptographic software notice
+* When all else fails
+
+
+===================
+Dependency Changes:
+===================
+Tomcat 7.0 is designed to run on Java SE 6 and later.
+
+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
+binary Tomcat distributions. Tomcat can also be configured to use the
+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:
+=======================
+Applications that require native libraries must ensure that the libraries have
+been loaded prior to use. Typically, this is done with a call like:
+
+ static {
+ System.loadLibrary("path-to-library-file");
+ }
+
+in some class. However, the application must also ensure that the library is
+not loaded more than once. If the above code were placed in a class inside
+the web application (i.e. under /WEB-INF/classes or /WEB-INF/lib), and the
+application were reloaded, the loadLibrary() call would be attempted a second
+time.
+
+To avoid this problem, place classes that load native libraries outside of the
+web application, and ensure that the loadLibrary() call is executed only once
+during the lifetime of a particular JVM.
+
+
+=============
+Bundled APIs:
+=============
+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.2.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.2 API)
+* servlet-api.jar (Servlet 3.0 API)
+* 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)
+
+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
+"endorsed" as endorsed.
+
+
+================================================================
+Web application reloading and static fields in shared libraries:
+================================================================
+Some shared libraries (many are part of the JDK) keep references to objects
+instantiated by the web application. To avoid class loading related problems
+(ClassCastExceptions, messages indicating that the classloader
+is stopped, etc.), the shared libraries state should be reinitialized.
+
+Something which might help is to avoid putting classes which would be
+referenced by a shared static field in the web application classloader,
+and putting them in the shared classloader instead (JARs should be put in the
+"lib" folder, and classes should be put in the "classes" folder).
+
+
+================
+Tomcat on Linux:
+================
+GLIBC 2.2 / Linux 2.4 users should define an environment variable:
+export LD_ASSUME_KERNEL=2.2.5
+
+Redhat Linux 9.0 users should use the following setting to avoid
+stability problems:
+export LD_ASSUME_KERNEL=2.4.1
+
+There are some Linux bugs reported against the NIO sendfile behavior, make sure you
+have a JDK that is up to date, or disable sendfile behavior in the Connector.<br/>
+6427312: (fc) FileChannel.transferTo() throws IOException "system call interrupted"<br/>
+5103988: (fc) FileChannel.transferTo should return -1 for EAGAIN instead throws IOException<br/>
+6253145: (fc) FileChannel.transferTo on Linux fails when going beyond 2GB boundary<br/>
+6470086: (fc) FileChannel.transferTo(2147483647, 1, channel) cause "Value too large" exception<br/>
+
+
+=============================
+Enabling SSI and CGI Support:
+=============================
+Because of the security risks associated with CGI and SSI available
+to web applications, these features are disabled by default.
+
+To enable and configure CGI support, please see the cgi-howto.html page.
+
+To enable and configue SSI support, please see the ssi-howto.html page.
+
+
+======================
+Security manager URLs:
+======================
+In order to grant security permissions to JARs located inside the
+web application repository, use URLs of of the following format
+in your policy file:
+
+file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar
+
+
+============================
+Symlinking static resources:
+============================
+By default, Unix symlinks will not work when used in a web application to link
+resources located outside the web application root directory.
+
+This behavior is optional, and the "allowLinking" flag may be used to disable
+the check.
+
+
+==============================
+Viewing the Tomcat Change Log:
+==============================
+See changelog.html in this directory.
+
+
+=============================
+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
+check your country's laws, regulations and policies concerning the
+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
+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
+code and source code.
+
+The following provides more details on the included cryptographic
+software:
+ - Tomcat includes code designed to work with JSSE
+ - Tomcat includes code designed to work with OpenSSL
+
+
+====================
+When all else fails:
+====================
+See the FAQ
+http://tomcat.apache.org/faq/
diff --git a/webapps/docs/RUNNING.txt b/webapps/docs/RUNNING.txt
new file mode 100644
index 0000000..1a17549
--- /dev/null
+++ b/webapps/docs/RUNNING.txt
@@ -0,0 +1,480 @@
+================================================================================
+ 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.
+================================================================================
+
+$Id: RUNNING.txt 1456725 2013-03-14 23:48:06Z kkolinko $
+
+ ===================================================
+ Running The Apache Tomcat 7.0 Servlet/JSP Container
+ ===================================================
+
+Apache Tomcat 7.0 requires a Java Standard Edition Runtime
+Environment (JRE) version 6 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 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
+ release.
+
+ You may also use a full Java Development Kit (JDK) rather than just
+ a JRE.
+
+
+(2) Download and Install Apache Tomcat
+
+(2.1) Download a binary distribution of Tomcat from:
+
+ http://tomcat.apache.org/
+
+(2.2) Unpack the binary distribution so that it resides in its own
+ directory (conventionally named "apache-tomcat-[version]").
+
+ For the purposes of the remainder of this document, the name
+ "CATALINA_HOME" is used to refer to the full pathname of that
+ directory.
+
+NOTE: As an alternative to downloading a binary distribution, you can
+create your own from the Tomcat source code, as described in
+"BUILDING.txt". You can either
+
+ a) Do the full "release" build and find the created distribution in the
+ "output/release" directory and then proceed with unpacking as above, or
+
+ b) Do a simple build and use the "output/build" directory as
+ "CATALINA_HOME". Be warned that there are some differences between the
+ contents of the "output/build" directory and a full "release"
+ distribution.
+
+
+(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.
+
+(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
+in all circumstances, so setting the variable explicitly is recommended.
+
+The CATALINA_BASE environment variable specifies location of the root
+directory of the "active configuration" of Tomcat. It is optional. It
+defaults to be equal to CATALINA_HOME.
+
+Using distinct values for the CATALINA_HOME and CATALINA_BASE variables is
+recommended to simplify further upgrades and maintenance. It is documented
+in the "Multiple Tomcat Instances" section below.
+
+
+(3.2) Set JRE_HOME or JAVA_HOME (required)
+
+These variables are used to specify location of a Java Runtime
+Environment or of a Java Development Kit that is used to start Tomcat.
+
+The JRE_HOME variable is used to specify location of a JRE. The JAVA_HOME
+variable is used to specify location of a JDK.
+
+Using JAVA_HOME provides access to certain additional startup options that
+are not allowed when JRE_HOME is used.
+
+If both JRE_HOME and JAVA_HOME are specified, JRE_HOME is used.
+
+The recommended place to specify these variables is a "setenv" script. See
+below.
+
+
+(3.3) Other variables (optional)
+
+Other environment variables exist, besides the four described above.
+See the comments at the top of catalina.bat or catalina.sh scripts for
+the list and a description of each of them.
+
+One frequently used variable is CATALINA_OPTS. It allows specification of
+additional options for the java command that starts Tomcat.
+
+See the Java documentation for the options that affect the Java Runtime
+Environment.
+
+See the "System Properties" page in the Tomcat Configuration Reference for
+the system properties that are specific to Tomcat.
+
+A similar variable is JAVA_OPTS. It is used less frequently. It allows
+specification of options that are used both to start and to stop Tomcat as well
+as for other commands.
+
+Note: Do not use JAVA_OPTS to specify memory limits. You do not need much
+memory for a small process that is used to stop Tomcat. Those settings
+belong to CATALINA_OPTS.
+
+Another frequently used variable is CATALINA_PID (on *nix only). It
+specifies the location of the file where process id of the forked Tomcat
+java process will be written. This setting is optional. It will enable the
+following features:
+
+ * better protection against duplicate start attempts and
+ * allows forceful termination of Tomcat process when it does not react to
+ the standard shutdown command.
+
+
+(3.4) Using the "setenv" script (optional, recommended)
+
+Apart from CATALINA_HOME and CATALINA_BASE, all environment variables can
+be specified in the "setenv" script. The script is placed either into
+CATALINA_BASE/bin or into CATALINA_HOME/bin directory and is named
+setenv.bat (on Windows) or setenv.sh (on *nix). The file has to be
+readable.
+
+By default the setenv script file is absent. If the script file is present
+both in CATALINA_BASE and in CATALINA_HOME, the one in CATALINA_BASE is
+preferred.
+
+For example, to configure the JRE_HOME and CATALINA_PID variables you can
+create the following script file:
+
+On Windows, %CATALINA_BASE%\bin\setenv.bat:
+
+ set "JRE_HOME=%ProgramFiles%\Java\jre6"
+ exit /b 0
+
+On *nix, $CATALINA_BASE/bin/setenv.sh:
+
+ JRE_HOME=/usr/java/latest
+ CATALINA_PID="$CATALINA_BASE/tomcat.pid"
+
+
+The CATALINA_HOME and CATALINA_BASE variables cannot be configured in the
+setenv script, because they are used to locate that file.
+
+All the environment variables described here and the "setenv" script are
+used only if you use the standard scripts to launch Tomcat. For example, if
+you have installed Tomcat as a service on Windows, the service wrapper
+launches Java directly and does not use the script files.
+
+
+(4) Start Up Tomcat
+
+(4.1) Tomcat can be started by executing one of the following commands:
+
+ On Windows:
+
+ %CATALINA_HOME%\bin\startup.bat
+
+ or
+
+ %CATALINA_HOME%\bin\catalina.bat start
+
+ On *nix:
+
+ $CATALINA_HOME/bin/startup.sh
+
+ or
+
+ $CATALINA_HOME/bin/catalina.sh start
+
+(4.2) After startup, the default web applications included with Tomcat will be
+ available by visiting:
+
+ http://localhost:8080/
+
+(4.3) Further information about configuring and running Tomcat can be found in
+ the documentation included here, as well as on the Tomcat web site:
+
+ http://tomcat.apache.org/
+
+
+(5) Shut Down Tomcat
+
+(5.1) Tomcat can be shut down by executing one of the following commands:
+
+ On Windows:
+
+ %CATALINA_HOME%\bin\shutdown.bat
+
+ or
+
+ %CATALINA_HOME%\bin\catalina.bat stop
+
+ On *nix:
+
+ $CATALINA_HOME/bin/shutdown.sh
+
+ or
+
+ $CATALINA_HOME/bin/catalina.sh stop
+
+==================================================
+Advanced Configuration - Multiple Tomcat Instances
+==================================================
+
+In many circumstances, it is desirable to have a single copy of a Tomcat
+binary distribution shared among multiple users on the same server. To make
+this possible, you can set the CATALINA_BASE environment variable to the
+directory that contains the files for your 'personal' Tomcat instance.
+
+When running with a separate CATALINA_HOME and CATALINA_BASE, the files
+and directories are split as following:
+
+In CATALINA_BASE:
+
+ * bin - Only the following files:
+
+ * setenv.sh (*nix) or setenv.bat (Windows),
+ * tomcat-juli.jar
+
+ The setenv scripts were described above. The tomcat-juli library
+ is documented in the Logging chapter in the User Guide.
+
+ * conf - Server configuration files (including server.xml)
+
+ * lib - Libraries and classes, as explained below
+
+ * logs - Log and output files
+
+ * webapps - Automatically loaded web applications
+
+ * work - Temporary working directories for web applications
+
+ * temp - Directory used by the JVM for temporary files (java.io.tmpdir)
+
+
+In CATALINA_HOME:
+
+ * bin - Startup and shutdown scripts
+
+ The following files will be used only if they are absent in
+ CATALINA_BASE/bin:
+
+ setenv.sh (*nix), setenv.bat (Windows), tomcat-juli.jar
+
+ * lib - Libraries and classes, as explained below
+
+ * endorsed - Libraries that override standard "Endorsed Standards"
+ libraries provided by JRE. See Classloading documentation
+ in the User Guide for details.
+
+ By default this "endorsed" directory is absent.
+
+In the default configuration the JAR libraries and classes both in
+CATALINA_BASE/lib and in CATALINA_HOME/lib will be added to the common
+classpath, but the ones in CATALINA_BASE will be added first and thus will
+be searched first.
+
+The idea is that you may leave the standard Tomcat libraries in
+CATALINA_HOME/lib and add other ones such as database drivers into
+CATALINA_BASE/lib.
+
+In general it is advised to never share libraries between web applications,
+but put them into WEB-INF/lib directories inside the applications. See
+Classloading documentation in the User Guide for details.
+
+
+It might be useful to note that the values of CATALINA_HOME and
+CATALINA_BASE can be referenced in the XML configuration files processed
+by Tomcat as ${catalina.home} and ${catalina.base} respectively.
+
+For example, the standard manager web application can be kept in
+CATALINA_HOME/webapps/manager and loaded into CATALINA_BASE by using
+the following trick:
+
+ * Copy the CATALINA_HOME/webapps/manager/META-INF/context.xml
+ file as CATALINA_BASE/conf/Catalina/localhost/manager.xml
+
+ * Add docBase attribute as shown below.
+
+The file will look like the following:
+
+ <?xml version="1.0" encoding="UTF-8"?>
+ <Context docBase="${catalina.home}/webapps/manager"
+ antiResourceLocking="false" privileged="true" >
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ allow="127\.0\.0\.1" />
+ </Context>
+
+See Deployer chapter in User Guide and Context and Host chapters in the
+Configuration Reference for more information on contexts and web
+application deployment.
+
+
+================
+Troubleshooting
+================
+
+There are only really 2 things likely to go wrong during the stand-alone
+Tomcat install:
+
+(1) The most common hiccup is when another web server (or any process for that
+ matter) has laid claim to port 8080. This is the default HTTP port that
+ Tomcat attempts to bind to at startup. To change this, open the file:
+
+ $CATALINA_HOME/conf/server.xml
+
+ and search for '8080'. Change it to a port that isn't in use, and is
+ greater than 1024, as ports less than or equal to 1024 require superuser
+ access to bind under UNIX.
+
+ Restart Tomcat and you're in business. Be sure that you replace the "8080"
+ in the URL you're using to access Tomcat. For example, if you change the
+ port to 1977, you would request the URL http://localhost:1977/ in your
+ browser.
+
+(2) The 'localhost' machine isn't found. This could happen if you're behind a
+ proxy. If that's the case, make sure the proxy configuration for your
+ browser knows that you shouldn't be going through the proxy to access the
+ "localhost".
+
+ In Firefox, this is under Tools/Preferences -> Advanced/Network ->
+ Connection -> Settings..., and in Internet Explorer it is Tools ->
+ Internet Options -> Connections -> LAN Settings.
+
+
+====================
+Optional Components
+====================
+
+The following optional components may be included with the Apache Tomcat binary
+distribution. If they are not included, you can install them separately.
+
+ 1. Apache Tomcat Native library
+
+ 2. Apache Commons Daemon service launcher
+
+Both of them are implemented in C language and as such have to be compiled
+into binary code. The binary code will be specific for a platform and CPU
+architecture and it must match the Java Runtime Environment executables
+that will be used to launch Tomcat.
+
+The Windows-specific binary distributions of Apache Tomcat include binary
+files for these components. On other platforms you would have to look for
+binary versions elsewhere or compile them yourself.
+
+If you are new to Tomcat, do not bother with these components to start with.
+If you do use them, do not forget to read their documentation.
+
+
+Apache Tomcat Native library
+-----------------------------
+
+It is a library that allows to use the "Apr" variant of HTTP and AJP
+protocol connectors in Apache Tomcat. It is built around OpenSSL and Apache
+Portable Runtime (APR) libraries. Those are the same libraries as used by
+Apache HTTPD Server project.
+
+This feature was especially important in the old days when Java performance
+was poor. It is less important nowadays, but it is still used and respected
+by many. See Tomcat documentation for more details.
+
+For further reading:
+
+ - Apache Tomcat documentation
+
+ * Documentation for APR/Native library in the Tomcat User's Guide
+
+ 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-7.0-doc/config/http.html
+
+ http://tomcat.apache.org/tomcat-7.0-doc/config/ajp.html
+
+ - Apache Tomcat Native project home
+
+ http://tomcat.apache.org/native-doc/
+
+ - Other projects
+
+ * OpenSSL
+
+ http://openssl.org/
+
+ * Apache Portable Runtime
+
+ http://apr.apache.org/
+
+ * Apache HTTP Server
+
+ http://httpd.apache.org/
+
+To disable Apache Tomcat Native library:
+
+ - To disable Apache Tomcat Native library when it is installed, or
+ - To remove the warning that is logged during Tomcat startup when the
+ library is not installed:
+
+ Edit the "conf/server.xml" file and remove "AprLifecycleListener" from
+ it.
+
+The binary file of Apache Tomcat Native library is usually named
+
+ - "tcnative-1.dll" on Windows
+ - "libtcnative-1.so" on *nix systems
+
+
+Apache Commons Daemon
+----------------------
+
+Apache Commons Daemon project provides wrappers that can be used to
+install Apache Tomcat as a service on Windows or as a daemon on *nix
+systems.
+
+The Windows-specific implementation of Apache Commons Daemon is called
+"procrun". The *nix-specific one is called "jsvc".
+
+For further reading:
+
+ - Apache Commons Daemon project
+
+ http://commons.apache.org/daemon/
+
+ - Apache Tomcat documentation
+
+ * Installing Apache Tomcat
+
+ http://tomcat.apache.org/tomcat-7.0-doc/setup.html
+
+ * Windows service HOW-TO
+
+ 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:
+
+ - "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 7.0
+in parallel, you have to further rename those files, using the same naming
+scheme.
diff --git a/webapps/docs/WEB-INF/web.xml b/webapps/docs/WEB-INF/web.xml
new file mode 100644
index 0000000..dd51ceb
--- /dev/null
+++ b/webapps/docs/WEB-INF/web.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<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_3_0.xsd"
+ version="3.0"
+ metadata-complete="true">
+
+ <display-name>Tomcat Documentation</display-name>
+ <description>
+ Tomcat Documentation.
+ </description>
+</web-app>
diff --git a/webapps/docs/aio.html b/webapps/docs/aio.html
new file mode 100644
index 0000000..2ef691b
--- /dev/null
+++ b/webapps/docs/aio.html
@@ -0,0 +1,357 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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
+ as provided with support for the Servlet API.
+ </p>
+
+ <p>
+ <b>IMPORTANT NOTE: Usage of these features requires using the APR or NIO
+ HTTP connectors. The classic java.io HTTP connector and the AJP connectors
+ do not support them.</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="Comet support"><!--()--></a><a name="Comet_support"><strong>Comet support</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ Comet support allows a servlet to process IO asynchronously, receiving
+ events when data is available for reading on the connection (rather than
+ always using a blocking read), and writing data back on connections
+ asynchronously (most likely responding to some event raised from some
+ other source).
+ </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.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
+ usual way. The main difference is that those objects remain valid and fully
+ functional at any time between processing of the BEGIN event until processing
+ 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
+ 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
+ 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.
+ 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
+ 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
+ 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
+ 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
+ or a similar unrecoverable error occurs on the connection. 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.</li>
+ </ul>
+
+ <p>
+ There are some event subtypes which allow finer processing of events (note: some of these
+ events require usage of the org.apache.catalina.valves.CometConnectionManagerValve valve):
+ </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
+ 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,
+ an invalid chunk block (sub type of ERROR).
+ </li>
+ <li>EventSubType.WEBAPP_RELOAD: The web application is being reloaded (sub type of END).
+ </li>
+ <li>EventSubType.SESSION_END: The servlet ended the session (sub type of END).
+ </li>
+ </ul>
+
+ <p>
+ As described above, the typical lifecycle of a Comet request will consist in a series of
+ events such as: BEGIN -> READ -> READ -> READ -> 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
+ 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
+ extends HttpServlet implements CometProcessor {
+
+ protected ArrayList<HttpServletResponse> connections =
+ new ArrayList<HttpServletResponse>();
+ protected MessageSender messageSender = null;
+
+ public void init() throws ServletException {
+ messageSender = new MessageSender();
+ Thread messageSenderThread =
+ new Thread(messageSender, "MessageSender[" + getServletContext().getContextPath() + "]");
+ messageSenderThread.setDaemon(true);
+ messageSenderThread.start();
+ }
+
+ public void destroy() {
+ connections.clear();
+ messageSender.stop();
+ messageSender = null;
+ }
+
+ /**
+ * Process the given Comet event.
+ *
+ * @param event The Comet event that will be processed
+ * @throws IOException
+ * @throws ServletException
+ */
+ public void event(CometEvent event)
+ throws IOException, ServletException {
+ HttpServletRequest request = event.getHttpServletRequest();
+ HttpServletResponse response = event.getHttpServletResponse();
+ if (event.getEventType() == CometEvent.EventType.BEGIN) {
+ log("Begin for session: " + request.getSession(true).getId());
+ PrintWriter writer = response.getWriter();
+ writer.println("<!doctype html public \"-//w3c//dtd html 4.0 transitional//en\">");
+ writer.println("<head><title>JSP Chat</title></head><body bgcolor=\"#FFFFFF\">");
+ writer.flush();
+ synchronized(connections) {
+ connections.add(response);
+ }
+ } else if (event.getEventType() == CometEvent.EventType.ERROR) {
+ log("Error for session: " + request.getSession(true).getId());
+ synchronized(connections) {
+ connections.remove(response);
+ }
+ event.close();
+ } else if (event.getEventType() == CometEvent.EventType.END) {
+ log("End for session: " + request.getSession(true).getId());
+ synchronized(connections) {
+ connections.remove(response);
+ }
+ PrintWriter writer = response.getWriter();
+ writer.println("</body></html>");
+ event.close();
+ } else if (event.getEventType() == CometEvent.EventType.READ) {
+ InputStream is = request.getInputStream();
+ byte[] buf = new byte[512];
+ do {
+ int n = is.read(buf); //can throw an IOException
+ if (n > 0) {
+ log("Read " + n + " bytes: " + new String(buf, 0, n)
+ + " for session: " + request.getSession(true).getId());
+ } else if (n < 0) {
+ error(event, request, response);
+ return;
+ }
+ } while (is.available() > 0);
+ }
+ }
+
+ public class MessageSender implements Runnable {
+
+ protected boolean running = true;
+ protected ArrayList<String> messages = new ArrayList<String>();
+
+ public MessageSender() {
+ }
+
+ public void stop() {
+ running = false;
+ }
+
+ /**
+ * Add message for sending.
+ */
+ public void send(String user, String message) {
+ synchronized (messages) {
+ messages.add("[" + user + "]: " + message);
+ messages.notify();
+ }
+ }
+
+ public void run() {
+
+ while (running) {
+
+ if (messages.size() == 0) {
+ try {
+ synchronized (messages) {
+ messages.wait();
+ }
+ } catch (InterruptedException e) {
+ // Ignore
+ }
+ }
+
+ synchronized (connections) {
+ String[] pendingMessages = null;
+ synchronized (messages) {
+ pendingMessages = messages.toArray(new String[0]);
+ messages.clear();
+ }
+ // Send any pending message on all the open connections
+ for (int i = 0; i < connections.size(); i++) {
+ try {
+ PrintWriter writer = connections.get(i).getWriter();
+ for (int j = 0; j < pendingMessages.length; j++) {
+ writer.println(pendingMessages[j] + "<br>");
+ }
+ writer.flush();
+ } catch (IOException e) {
+ log("IOExeption sending message", e);
+ }
+ }
+ }
+
+ }
+
+ }
+
+ }
+
+}
+ </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>
+ <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>
+ 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>
+ </p>
+ <p>If you are using the APR connector, all Comet connections will have the same timeout value. It is <code>soTimeout*50</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="Asynchronous writes"><!--()--></a><a name="Asynchronous_writes"><strong>Asynchronous writes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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
+ 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
+ response data in a file rather than store it in memory. Sendfile support is
+ 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
+ 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>
+ <li><code>org.apache.tomcat.sendfile.start</code>: Start offset as a Long</li>
+ <li><code>org.apache.tomcat.sendfile.end</code>: End offset as a Long</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/api/index.html b/webapps/docs/api/index.html
new file mode 100644
index 0000000..1918dee
--- /dev/null
+++ b/webapps/docs/api/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>
+
+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-7.0-doc/">
+documentation bundle</a>.
+
+</body>
+</html>
diff --git a/webapps/docs/appdev/build.xml.txt b/webapps/docs/appdev/build.xml.txt
new file mode 100644
index 0000000..9ce7d20
--- /dev/null
+++ b/webapps/docs/appdev/build.xml.txt
@@ -0,0 +1,514 @@
+<!--
+ 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.
+-->
+
+<!--
+ General purpose build script for web applications and web services,
+ including enhanced support for deploying directly to a Tomcat 6
+ based server.
+
+ This build script assumes that the source code of your web application
+ is organized into the following subdirectories underneath the source
+ code directory from which you execute the build script:
+
+ docs Static documentation files to be copied to
+ the "docs" subdirectory of your distribution.
+
+ src Java source code (and associated resource files)
+ to be compiled to the "WEB-INF/classes"
+ subdirectory of your web application.
+
+ web Static HTML, JSP, and other content (such as
+ image files), including the WEB-INF subdirectory
+ and its configuration file contents.
+
+ $Id: build.xml.txt 1200125 2011-11-10 04:05:48Z kkolinko $
+-->
+
+
+<!-- A "project" describes a set of targets that may be requested
+ when Ant is executed. The "default" attribute defines the
+ target which is executed if no specific target is requested,
+ and the "basedir" attribute defines the current working directory
+ from which Ant executes the requested task. This is normally
+ set to the current working directory.
+-->
+
+<project name="My Project" default="compile" basedir=".">
+
+
+
+<!-- ===================== Property Definitions =========================== -->
+
+
+<!--
+
+ Each of the following properties are used in the build script.
+ Values for these properties are set by the first place they are
+ defined, from the following list:
+
+ * Definitions on the "ant" command line (ant -Dfoo=bar compile).
+
+ * Definitions from a "build.properties" file in the top level
+ source directory of this application.
+
+ * Definitions from a "build.properties" file in the developer's
+ home directory.
+
+ * Default definitions in this build.xml file.
+
+ You will note below that property values can be composed based on the
+ contents of previously defined properties. This is a powerful technique
+ that helps you minimize the number of changes required when your development
+ environment is modified. Note that property composition is allowed within
+ "build.properties" files as well as in the "build.xml" script.
+
+-->
+
+ <property file="build.properties"/>
+ <property file="${user.home}/build.properties"/>
+
+
+<!-- ==================== File and Directory Names ======================== -->
+
+
+<!--
+
+ These properties generally define file and directory names (or paths) that
+ affect where the build process stores its outputs.
+
+ app.name Base name of this application, used to
+ construct filenames and directories.
+ Defaults to "myapp".
+
+ app.path Context path to which this application should be
+ deployed (defaults to "/" plus the value of the
+ "app.name" property).
+
+ app.version Version number of this iteration of the application.
+
+ build.home The directory into which the "prepare" and
+ "compile" targets will generate their output.
+ Defaults to "build".
+
+ catalina.home The directory in which you have installed
+ a binary distribution of Tomcat 6. This will
+ be used by the "deploy" target.
+
+ dist.home The name of the base directory in which
+ distribution files are created.
+ Defaults to "dist".
+
+ manager.password The login password of a user that is assigned the
+ "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
+ Tomcat installation to which we will deploy web
+ applications and web services.
+
+ manager.username The login username of a user that is assigned the
+ "manager-script" role (so that he or she can execute
+ commands via the "/manager" web application)
+
+-->
+
+ <property name="app.name" value="myapp"/>
+ <property name="app.path" value="/${app.name}"/>
+ <property name="app.version" value="0.1-dev"/>
+ <property name="build.home" value="${basedir}/build"/>
+ <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/text"/>
+ <property name="src.home" value="${basedir}/src"/>
+ <property name="web.home" value="${basedir}/web"/>
+
+
+<!-- ==================== External Dependencies =========================== -->
+
+
+<!--
+
+ Use property values to define the locations of external JAR files on which
+ your application will depend. In general, these values will be used for
+ two purposes:
+ * Inclusion on the classpath that is passed to the Javac compiler
+ * 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
+ 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.
+
+-->
+
+<!-- Dummy external dependency -->
+<!--
+ <property name="foo.jar"
+ value="/path/to/foo.jar"/>
+-->
+
+
+<!-- ==================== Compilation Classpath =========================== -->
+
+<!--
+
+ Rather than relying on the CLASSPATH environment variable, Ant includes
+ features that makes it easy to dynamically construct the classpath you
+ need for each compilation. The example below constructs the compile
+ classpath to include the servlet.jar file, as well as the other components
+ that Tomcat makes available to web applications automatically, plus anything
+ that you explicitly added.
+
+-->
+
+ <path id="compile.classpath">
+
+ <!-- Include all JAR files that will be included in /WEB-INF/lib -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+<!--
+ <pathelement location="${foo.jar}"/>
+-->
+
+ <!-- Include all elements that Tomcat exposes to applications -->
+ <fileset dir="${catalina.home}/bin">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${catalina.home}/lib"/>
+ <fileset dir="${catalina.home}/lib">
+ <include name="*.jar"/>
+ </fileset>
+
+ </path>
+
+
+
+<!-- ================== Custom Ant Task Definitions ======================= -->
+
+
+<!--
+
+ These properties define custom tasks for the Ant build tool that interact
+ with the "/manager" web application installed with Tomcat 6. Before they
+ can be successfully utilized, you must perform the following steps:
+
+ - Copy the file "lib/catalina-ant.jar" from your Tomcat 6
+ installation into the "lib" directory of your Ant installation.
+
+ - Create a "build.properties" file in your application's top-level
+ source directory (or your user login home directory) that defines
+ appropriate values for the "manager.password", "manager.url", and
+ "manager.username" properties described above.
+
+ For more information about the Manager web application, and the functionality
+ of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
+
+-->
+
+ <taskdef resource="org/apache/catalina/ant/catalina.tasks"
+ classpathref="compile.classpath"/>
+
+
+<!-- ==================== Compilation Control Options ==================== -->
+
+<!--
+
+ These properties control option settings on the Javac compiler when it
+ is invoked using the <javac> task.
+
+ compile.debug Should compilation include the debug option?
+
+ compile.deprecation Should compilation include the deprecation option?
+
+ compile.optimize Should compilation include the optimize option?
+
+-->
+
+ <property name="compile.debug" value="true"/>
+ <property name="compile.deprecation" value="false"/>
+ <property name="compile.optimize" value="true"/>
+
+
+
+<!-- ==================== All Target ====================================== -->
+
+<!--
+
+ The "all" target is a shortcut for running the "clean" target followed
+ by the "compile" target, to force a complete recompile.
+
+-->
+
+ <target name="all" depends="clean,compile"
+ description="Clean build and dist directories, then compile"/>
+
+
+
+<!-- ==================== Clean Target ==================================== -->
+
+<!--
+
+ The "clean" target deletes any previous "build" and "dist" directory,
+ so that you can be ensured the application can be built from scratch.
+
+-->
+
+ <target name="clean"
+ description="Delete old build and dist directories">
+ <delete dir="${build.home}"/>
+ <delete dir="${dist.home}"/>
+ </target>
+
+
+
+<!-- ==================== Compile Target ================================== -->
+
+<!--
+
+ The "compile" target transforms source files (from your "src" directory)
+ into object files in the appropriate location in the build directory.
+ This example assumes that you will be including your classes in an
+ unpacked directory hierarchy under "/WEB-INF/classes".
+
+-->
+
+ <target name="compile" depends="prepare"
+ description="Compile Java sources">
+
+ <!-- Compile Java classes as necessary -->
+ <mkdir dir="${build.home}/WEB-INF/classes"/>
+ <javac srcdir="${src.home}"
+ destdir="${build.home}/WEB-INF/classes"
+ debug="${compile.debug}"
+ deprecation="${compile.deprecation}"
+ optimize="${compile.optimize}">
+ <classpath refid="compile.classpath"/>
+ </javac>
+
+ <!-- Copy application resources -->
+ <copy todir="${build.home}/WEB-INF/classes">
+ <fileset dir="${src.home}" excludes="**/*.java"/>
+ </copy>
+
+ </target>
+
+
+
+<!-- ==================== Dist Target ===================================== -->
+
+
+<!--
+
+ The "dist" target creates a binary distribution of your application
+ in a directory structure ready to be archived in a tar.gz or zip file.
+ Note that this target depends on two others:
+
+ * "compile" so that the entire web application (including external
+ dependencies) will have been assembled
+
+ * "javadoc" so that the application Javadocs will have been created
+
+-->
+
+ <target name="dist" depends="compile,javadoc"
+ description="Create binary distribution">
+
+ <!-- Copy documentation subdirectories -->
+ <mkdir dir="${dist.home}/docs"/>
+ <copy todir="${dist.home}/docs">
+ <fileset dir="${docs.home}"/>
+ </copy>
+
+ <!-- Create application JAR file -->
+ <jar jarfile="${dist.home}/${app.name}-${app.version}.war"
+ basedir="${build.home}"/>
+
+ <!-- Copy additional files to ${dist.home} as necessary -->
+
+ </target>
+
+
+
+<!-- ==================== Install Target ================================== -->
+
+<!--
+
+ The "install" target tells the specified Tomcat 6 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
+ this web application.
+
+ If you have already installed this application, and simply want Tomcat to
+ recognize that you have updated Java classes (or the web.xml file), use the
+ "reload" target instead.
+
+ NOTE: This target will only succeed if it is run from the same server that
+ Tomcat is running on.
+
+ NOTE: This is the logical opposite of the "remove" target.
+
+-->
+
+ <target name="install" depends="compile"
+ description="Install application to servlet container">
+
+ <deploy url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"
+ localWar="file://${build.home}"/>
+
+ </target>
+
+
+<!-- ==================== Javadoc Target ================================== -->
+
+<!--
+
+ The "javadoc" target creates Javadoc API documentation for the Java
+ classes included in your application. Normally, this is only required
+ when preparing a distribution release, but is available as a separate
+ target in case the developer wants to create Javadocs independently.
+
+-->
+
+ <target name="javadoc" depends="compile"
+ description="Create Javadoc API documentation">
+
+ <mkdir dir="${dist.home}/docs/api"/>
+ <javadoc sourcepath="${src.home}"
+ destdir="${dist.home}/docs/api"
+ packagenames="*">
+ <classpath refid="compile.classpath"/>
+ </javadoc>
+
+ </target>
+
+
+
+<!-- ====================== List Target =================================== -->
+
+<!--
+
+ The "list" target asks the specified Tomcat 6 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.
+
+-->
+
+ <target name="list"
+ description="List installed applications on servlet container">
+
+ <list url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"/>
+
+ </target>
+
+
+<!-- ==================== Prepare Target ================================== -->
+
+<!--
+
+ The "prepare" target is used to create the "build" destination directory,
+ and copy the static contents of your web application to it. If you need
+ to copy static files from external dependencies, you can customize the
+ contents of this task.
+
+ Normally, this task is executed indirectly when needed.
+
+-->
+
+ <target name="prepare">
+
+ <!-- Create build directories as needed -->
+ <mkdir dir="${build.home}"/>
+ <mkdir dir="${build.home}/WEB-INF"/>
+ <mkdir dir="${build.home}/WEB-INF/classes"/>
+
+
+ <!-- Copy static content of this web application -->
+ <copy todir="${build.home}">
+ <fileset dir="${web.home}"/>
+ </copy>
+
+ <!-- Copy external dependencies as required -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+ <mkdir dir="${build.home}/WEB-INF/lib"/>
+<!--
+ <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
+-->
+
+ <!-- Copy static files from external dependencies as needed -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+
+ </target>
+
+
+<!-- ==================== Reload Target =================================== -->
+
+<!--
+
+ The "reload" signals the specified application Tomcat 6 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
+ /WEB-INF/lib directory.
+
+ 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.
+
+-->
+
+ <target name="reload" depends="compile"
+ description="Reload application on servlet container">
+
+ <reload url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"/>
+
+ </target>
+
+
+<!-- ==================== Remove Target =================================== -->
+
+<!--
+
+ The "remove" target tells the specified Tomcat 6 installation to dynamically
+ remove this web application from service.
+
+ NOTE: This is the logical opposite of the "install" target.
+
+-->
+
+ <target name="remove"
+ description="Remove application on servlet container">
+
+ <undeploy url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"/>
+
+ </target>
+
+
+</project>
diff --git a/webapps/docs/appdev/deployment.html b/webapps/docs/appdev/deployment.html
new file mode 100644
index 0000000..ab86ad9
--- /dev/null
+++ b/webapps/docs/appdev/deployment.html
@@ -0,0 +1,246 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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,
+it is useful to examine the runtime organization of a web application.
+Prior to the Servlet API Specification, version 2.2, there was little
+consistency between server platforms. However, servers that conform
+to the 2.2 (or later) specification are required to accept a
+<em>Web Application Archive</em> in a standard format, which is discussed
+further below.</p>
+
+<p>A web application is defined as a hierarchy of directories and files
+in a standard layout. Such a hierarchy can be accessed in its "unpacked"
+form, where each directory and file exists in the filesystem separately,
+or in a "packed" form known as a Web ARchive, or WAR file. The former format
+is more useful during development, while the latter is used when you
+distribute your application to be installed.</p>
+
+<p>The top-level directory of your web application hierarchy is also the
+<em>document root</em> of your application. Here, you will place the HTML
+files and JSP pages that comprise your application's user interface. When the
+system administrator deploys your application into a particular server, he
+or she assigns a <em>context path</em> to your application (a later section
+of this manual describes deployment on Tomcat). Thus, if the
+system administrator assigns your application to the context path
+<code>/catalog</code>, then a request URI referring to
+<code>/catalog/index.html</code> will retrieve the <code>index.html</code>
+file from your document root.</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 Directory Layout"><!--()--></a><a name="Standard_Directory_Layout"><strong>Standard Directory Layout</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>To facilitate creation of a Web Application Archive file in the required
+format, it is convenient to arrange the "executable" files of your web
+application (that is, the files that Tomcat actually uses when executing
+your app) in the same organization as required by the WAR format itself.
+To do this, you will end up with the following contents in your
+application's "document root" directory:</p>
+<ul>
+<li><strong>*.html, *.jsp, etc.</strong> - The HTML and JSP pages, along
+ with other files that must be visible to the client browser (such as
+ JavaScript, stylesheet files, and images) for your application.
+ In larger applications you may choose to divide these files into
+ a subdirectory hierarchy, but for smaller apps, it is generally
+ much simpler to maintain only a single directory for these files.
+ <br><br></li>
+<li><strong>/WEB-INF/web.xml</strong> - The <em>Web Application Deployment
+ Descriptor</em> for your application. This is an XML file describing
+ the servlets and other components that make up your application,
+ along with any initialization parameters and container-managed
+ security constraints that you want the server to enforce for you.
+ This file is discussed in more detail in the following subsection.
+ <br><br></li>
+<li><strong>/WEB-INF/classes/</strong> - This directory contains any Java
+ class files (and associated resources) required for your application,
+ including both servlet and non-servlet classes, that are not combined
+ into JAR files. If your classes are organized into Java packages,
+ you must reflect this in the directory hierarchy under
+ <code>/WEB-INF/classes/</code>. For example, a Java class named
+ <code>com.mycompany.mypackage.MyServlet</code>
+ would need to be stored in a file named
+ <code>/WEB-INF/classes/com/mycompany/mypackage/MyServlet.class</code>.
+ <br><br></li>
+<li><strong>/WEB-INF/lib/</strong> - This directory contains JAR files that
+ contain Java class files (and associated resources) required for your
+ 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 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
+you include all of the required library classes in one of these places (be
+sure to check licenses for redistribution rights for any third party libraries
+you utilize), you will simplify the installation of your web application --
+no adjustment to the system class path (or installation of global library
+files in your server) will be necessary.</p>
+
+<p>Much of this information was extracted from Chapter 9 of the Servlet
+API Specification, version 2.3, which you should consult for more details.</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="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 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 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 installation includes a variety
+of pre-installed shared library files, including:</p>
+<ul>
+<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>
+
+</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 Deployment Descriptor"><!--()--></a><a name="Web_Application_Deployment_Descriptor"><strong>Web Application Deployment Descriptor</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>As mentioned above, the <code>/WEB-INF/web.xml</code> file contains the
+Web Application Deployment Descriptor for your application. As the filename
+extension implies, this file is an XML document, and defines everything about
+your application that a server needs to know (except the <em>context path</em>,
+which is assigned by the system administrator when the application is
+deployed).</p>
+
+<p>The complete syntax and semantics for the deployment descriptor is defined
+in Chapter 13 of the Servlet API Specification, version 2.3. Over time, it
+is expected that development tools will be provided that create and edit the
+deployment descriptor for you. In the meantime, to provide a starting point,
+a <a href="web.xml.txt">basic web.xml file</a>
+is provided. This file includes comments that describe the purpose of each
+included element.</p>
+
+<p><strong>NOTE</strong> - The Servlet Specification includes a Document
+Type Descriptor (DTD) for the web application deployment descriptor, and
+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><filter></code>,
+<code><servlet></code>, and <code><servlet-mapping></code> in
+the order defined by the DTD (see Section 13.3).</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 Context Descriptor"><!--()--></a><a name="Tomcat_Context_Descriptor"><strong>Tomcat Context Descriptor</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>A /META-INF/context.xml file can be used to define Tomcat specific
+configuration options, such as an access log, data sources, session manager
+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
+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"><!--()--></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
+ 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>
+
+<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 to provide the execution environment.
+A web application can be deployed in Tomcat by one of the following
+approaches:</p>
+<ul>
+<li><em>Copy unpacked directory hierarchy into a subdirectory in directory
+ <code>$CATALINA_BASE/webapps/</code></em>. Tomcat will assign a
+ context path to your application based on the subdirectory name you
+ choose. We will use this technique in the <code>build.xml</code>
+ file that we construct, because it is the quickest and easiest approach
+ during development. Be sure to restart Tomcat after installing or
+ updating your application.
+ <br><br></li>
+<li><em>Copy the web application archive file into directory
+ <code>$CATALINA_BASE/webapps/</code></em>. When Tomcat is started, it will
+ automatically expand the web application archive file into its unpacked
+ form, and execute the application that way. This approach would typically
+ be used to install an additional application, provided by a third party
+ vendor or by your internal development staff, into an existing
+ Tomcat installation. <strong>NOTE</strong> - If you use this approach,
+ and wish to update your application later, you must both replace the
+ web application archive file <strong>AND</strong> delete the expanded
+ directory that Tomcat created, and then restart Tomcat, in order to reflect
+ your changes.
+ <br><br></li>
+<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)
+ for more information on using the Manager web application.<br><br></li>
+<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 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>
+</ul>
+
+<p>Deploying your app on other servlet containers will be specific to each
+container, but all containers compatible with the Servlet API Specification
+(version 2.2 or later) are required to accept a web application archive file.
+Note that other containers are <strong>NOT</strong> required to accept an
+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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/index.html b/webapps/docs/appdev/index.html
new file mode 100644
index 0000000..55e2f4c
--- /dev/null
+++ b/webapps/docs/appdev/index.html
@@ -0,0 +1,87 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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:
+</p>
+<ul>
+<li>Craig R. McClanahan
+ (<a href="mailto:craigmcc@apache.org">craigmcc@apache.org</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="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The information presented is divided into the following sections:</p>
+<ul>
+<li><a href="introduction.html"><strong>Introduction</strong></a> -
+ Briefly describes the information covered here, with
+ links and references to other sources of information.</li>
+<li><a href="installation.html"><strong>Installation</strong></a> -
+ Covers acquiring and installing the required software
+ components to use Tomcat for web application development.</li>
+<li><a href="deployment.html"><strong>Deployment Organization</strong></a> -
+ Discusses the standard directory layout for a web application
+ (defined in the Servlet API Specification), the Web Application
+ Deployment Descriptor, and options for integration with Tomcat
+ in your development environment.</li>
+<li><a href="source.html"><strong>Source Organization</strong></a> -
+ Describes a useful approach to organizing the source code
+ directories for your project, and introduces the
+ <code>build.xml</code> used by Ant to manage compilation.</li>
+<li><a href="processes.html"><strong>Development Processes</strong></a> -
+ Provides brief descriptions of typical development processes
+ utilizing the recommended deployment and source organizations.</li>
+<li><a href="sample/"><strong>Example Application</strong></a> -
+ This directory contains a very simple, but functionally complete,
+ "Hello, World" application built according to the principles
+ described in this manual. You can use this application to
+ practice using the described techniques.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/installation.html b/webapps/docs/appdev/installation.html
new file mode 100644
index 0000000..7803a16
--- /dev/null
+++ b/webapps/docs/appdev/installation.html
@@ -0,0 +1,115 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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 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://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/">http://tomcat.apache.org/</a>.
+This manual assumes you are using the most recent release
+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 has been installed. Optionally, if
+Tomcat has been configured for multiple instances, each instance will have its
+own <code>CATALINA_BASE</code> configured.</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="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/">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.
+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
+execute the <code>ant</code> shell command directly.</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="CVS"><strong>CVS</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Besides the required tools described above, you are strongly encouraged
+to download and install a <em>source code control</em> system, such as the
+<strong>Concurrent Version System</strong> (CVS), to maintain historical
+versions of the source files that make up your web application. Besides
+the server, you will also need appropriate client
+tools to check out source code files, and check in modified versions.</p>
+
+<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>
+
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/introduction.html b/webapps/docs/appdev/introduction.html
new file mode 100644
index 0000000..fec0c76
--- /dev/null
+++ b/webapps/docs/appdev/introduction.html
@@ -0,0 +1,100 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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
+Tomcat server to use for your learning and development. But now what
+do you do?</p>
+
+<p>This manual is a primer covering the basic steps of using Tomcat to
+set up a development environment, organize your source code, and then
+build and test your application. It does not discuss architectures or
+recommended coding practices for web application development,
+or provide in depth instructions on operating the development
+tools that are discussed. References to sources of additional information
+are included in the following subsections.</p>
+
+<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
+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
+the details of your particular environment.</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="Links"><strong>Links</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The following links provide access to selected sources of online
+information, documentation, and software that is useful in developing
+web applications with Tomcat.</p>
+<ul>
+<li><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
+ what a portable API page is allowed to contain. Specific
+ 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/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 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>
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/processes.html b/webapps/docs/appdev/processes.html
new file mode 100644
index 0000000..744f558
--- /dev/null
+++ b/webapps/docs/appdev/processes.html
@@ -0,0 +1,329 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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>
+
+<p>Although application development can take many forms, this manual proposes
+a fairly generic process for creating web applications using Tomcat. The
+following sections highlight the commands and tasks that you, as the developer
+of the code, will perform. The same basic approach works when you have
+multiple programmers involved, as long as you have an appropriate source code
+control system and internal team rules about who is working on what parts
+of the application at any given time.</p>
+
+<p>The task descriptions below assume that you will be using CVS for source
+code control, and that you have already configured access to the appropriate
+CVS repository. Instructions for doing this are beyond the scope of this
+manual. If you are using a different source code control environment, you
+will need to figure out the corresponding commands for your system.</p>
+
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="One-Time Setup of Ant and Tomcat for Development"><!--()--></a><a name="One-Time_Setup_of_Ant_and_Tomcat_for_Development"><strong>One-Time Setup of Ant and Tomcat for Development</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>In order to take advantage of the special Ant tasks that interact with the
+<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
+ 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
+ application runs under a security constraint that requires a user to be
+ 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-script</code> role.
+ <br><br></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="Create Project Source Code Directory"><!--()--></a><a name="Create_Project_Source_Code_Directory"><strong>Create Project Source Code Directory</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The first step is to create a new project source directory, and customize
+the <code>build.xml</code> and <code>build.properties</code> files you will
+be using. The directory structure is described in <a href="source.html">the
+previous section</a>, or you can use the
+<a href="sample/">sample application</a> as a starting point.</p>
+
+<p>Create your project source directory, and define it within your CVS
+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 <-- 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>
+
+<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 ..
+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>
+
+<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}
+cd myapp
+emacs build.xml <-- 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>
+
+<p>Until you perform the CVS commit, your changes are local to your own
+development directory. Committing makes those changes visible to other
+developers on your team that are sharing the same CVS repository.</p>
+
+<p>The next step is to customize the Ant <em>properties</em> that are
+named in the <code>build.xml</code> script. This is done by creating a
+file named <code>build.properties</code> in your project's top-level
+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 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
+app.path=/hello
+
+# 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>
+
+<p>In general, you will <strong>not</strong> want to check the
+<code>build.properties</code> file in to the CVS repository, because it
+is unique to each developer's environment.</p>
+
+<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}
+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>
+
+Note that this is only an example web.xml file. The full definition
+of the deployment descriptor file is in the
+<a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification.</a>
+
+</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 Source Code and Pages"><!--()--></a><a name="Edit_Source_Code_and_Pages"><strong>Edit Source Code and Pages</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The edit/build/test tasks will generally be your most common activities
+during development and maintenance. The following general principles apply.
+As described in <a href="source.html">Source Organization</a>, newly created
+source files should be located in the appropriate subdirectory, under your
+project source directory.</p>
+
+<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}
+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>
+
+<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 <-- 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>
+
+<p>Java source code that is defined in packages must be organized in a
+directory hierarchy (under the <strong>src/</strong> subdirectory) that
+matches the package names. For example, a Java class named
+<code>com.mycompany.mypackage.MyClass.java</code> should be stored in file
+<code>src/com/mycompany/mypackage/MyClass.java</code>.
+Whenever you create a new subdirectory, don't forget to
+register it with CVS.</p>
+
+<p>To edit an existing source file, you will generally just start editing
+and testing, then commit the changed file when everything works. Although
+CVS can be configured to required you to "check out" or "lock" a file you
+are going to be modifying, this is generally not used.</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="Build the Web Application"><!--()--></a><a name="Build_the_Web_Application"><strong>Build the Web Application</strong></a></font></td></tr><tr><td><blockquote>
+
+<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 <-- 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>
+
+<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
+code. If this is the first time you compile after a "build clean",
+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}
+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>
+
+<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
+conditional checking did not catch.</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="Test Your Web Application"><!--()--></a><a name="Test_Your_Web_Application"><strong>Test Your Web Application</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>To test your application, you will want to install it under Tomcat. The
+quickest way to do that is to use the custom Ant tasks that are included in
+the sample <code>build.xml</code> script. Using these commands might follow
+a pattern like this:</p>
+<ul>
+<li><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>
+ 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>
+ 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
+ tools, test the functionality of your application.
+ <br><br></li>
+<li><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
+ 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
+ working on this application, you can remove it from live execution by
+ running the <code>ant remove</code> command.</li>
+</ul>
+
+<p>Do not forget to commit your changes to the source code repository when
+you have completed your testing!</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="Creating a Release"><!--()--></a><a name="Creating_a_Release"><strong>Creating a Release</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>When you are through adding new functionality, and you've tested everything
+(you DO test, don't you :-), it is time to create the distributable version
+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
+ 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
+ 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
+ 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
+ <strong>tar</strong> or <strong>zip</strong> utility, according to
+ the standard release procedures used by your organization.</li>
+</ul>
+
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/sample/build.xml b/webapps/docs/appdev/sample/build.xml
new file mode 100644
index 0000000..9ce7d20
--- /dev/null
+++ b/webapps/docs/appdev/sample/build.xml
@@ -0,0 +1,514 @@
+<!--
+ 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.
+-->
+
+<!--
+ General purpose build script for web applications and web services,
+ including enhanced support for deploying directly to a Tomcat 6
+ based server.
+
+ This build script assumes that the source code of your web application
+ is organized into the following subdirectories underneath the source
+ code directory from which you execute the build script:
+
+ docs Static documentation files to be copied to
+ the "docs" subdirectory of your distribution.
+
+ src Java source code (and associated resource files)
+ to be compiled to the "WEB-INF/classes"
+ subdirectory of your web application.
+
+ web Static HTML, JSP, and other content (such as
+ image files), including the WEB-INF subdirectory
+ and its configuration file contents.
+
+ $Id: build.xml.txt 1200125 2011-11-10 04:05:48Z kkolinko $
+-->
+
+
+<!-- A "project" describes a set of targets that may be requested
+ when Ant is executed. The "default" attribute defines the
+ target which is executed if no specific target is requested,
+ and the "basedir" attribute defines the current working directory
+ from which Ant executes the requested task. This is normally
+ set to the current working directory.
+-->
+
+<project name="My Project" default="compile" basedir=".">
+
+
+
+<!-- ===================== Property Definitions =========================== -->
+
+
+<!--
+
+ Each of the following properties are used in the build script.
+ Values for these properties are set by the first place they are
+ defined, from the following list:
+
+ * Definitions on the "ant" command line (ant -Dfoo=bar compile).
+
+ * Definitions from a "build.properties" file in the top level
+ source directory of this application.
+
+ * Definitions from a "build.properties" file in the developer's
+ home directory.
+
+ * Default definitions in this build.xml file.
+
+ You will note below that property values can be composed based on the
+ contents of previously defined properties. This is a powerful technique
+ that helps you minimize the number of changes required when your development
+ environment is modified. Note that property composition is allowed within
+ "build.properties" files as well as in the "build.xml" script.
+
+-->
+
+ <property file="build.properties"/>
+ <property file="${user.home}/build.properties"/>
+
+
+<!-- ==================== File and Directory Names ======================== -->
+
+
+<!--
+
+ These properties generally define file and directory names (or paths) that
+ affect where the build process stores its outputs.
+
+ app.name Base name of this application, used to
+ construct filenames and directories.
+ Defaults to "myapp".
+
+ app.path Context path to which this application should be
+ deployed (defaults to "/" plus the value of the
+ "app.name" property).
+
+ app.version Version number of this iteration of the application.
+
+ build.home The directory into which the "prepare" and
+ "compile" targets will generate their output.
+ Defaults to "build".
+
+ catalina.home The directory in which you have installed
+ a binary distribution of Tomcat 6. This will
+ be used by the "deploy" target.
+
+ dist.home The name of the base directory in which
+ distribution files are created.
+ Defaults to "dist".
+
+ manager.password The login password of a user that is assigned the
+ "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
+ Tomcat installation to which we will deploy web
+ applications and web services.
+
+ manager.username The login username of a user that is assigned the
+ "manager-script" role (so that he or she can execute
+ commands via the "/manager" web application)
+
+-->
+
+ <property name="app.name" value="myapp"/>
+ <property name="app.path" value="/${app.name}"/>
+ <property name="app.version" value="0.1-dev"/>
+ <property name="build.home" value="${basedir}/build"/>
+ <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/text"/>
+ <property name="src.home" value="${basedir}/src"/>
+ <property name="web.home" value="${basedir}/web"/>
+
+
+<!-- ==================== External Dependencies =========================== -->
+
+
+<!--
+
+ Use property values to define the locations of external JAR files on which
+ your application will depend. In general, these values will be used for
+ two purposes:
+ * Inclusion on the classpath that is passed to the Javac compiler
+ * 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
+ 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.
+
+-->
+
+<!-- Dummy external dependency -->
+<!--
+ <property name="foo.jar"
+ value="/path/to/foo.jar"/>
+-->
+
+
+<!-- ==================== Compilation Classpath =========================== -->
+
+<!--
+
+ Rather than relying on the CLASSPATH environment variable, Ant includes
+ features that makes it easy to dynamically construct the classpath you
+ need for each compilation. The example below constructs the compile
+ classpath to include the servlet.jar file, as well as the other components
+ that Tomcat makes available to web applications automatically, plus anything
+ that you explicitly added.
+
+-->
+
+ <path id="compile.classpath">
+
+ <!-- Include all JAR files that will be included in /WEB-INF/lib -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+<!--
+ <pathelement location="${foo.jar}"/>
+-->
+
+ <!-- Include all elements that Tomcat exposes to applications -->
+ <fileset dir="${catalina.home}/bin">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${catalina.home}/lib"/>
+ <fileset dir="${catalina.home}/lib">
+ <include name="*.jar"/>
+ </fileset>
+
+ </path>
+
+
+
+<!-- ================== Custom Ant Task Definitions ======================= -->
+
+
+<!--
+
+ These properties define custom tasks for the Ant build tool that interact
+ with the "/manager" web application installed with Tomcat 6. Before they
+ can be successfully utilized, you must perform the following steps:
+
+ - Copy the file "lib/catalina-ant.jar" from your Tomcat 6
+ installation into the "lib" directory of your Ant installation.
+
+ - Create a "build.properties" file in your application's top-level
+ source directory (or your user login home directory) that defines
+ appropriate values for the "manager.password", "manager.url", and
+ "manager.username" properties described above.
+
+ For more information about the Manager web application, and the functionality
+ of these tasks, see <http://localhost:8080/tomcat-docs/manager-howto.html>.
+
+-->
+
+ <taskdef resource="org/apache/catalina/ant/catalina.tasks"
+ classpathref="compile.classpath"/>
+
+
+<!-- ==================== Compilation Control Options ==================== -->
+
+<!--
+
+ These properties control option settings on the Javac compiler when it
+ is invoked using the <javac> task.
+
+ compile.debug Should compilation include the debug option?
+
+ compile.deprecation Should compilation include the deprecation option?
+
+ compile.optimize Should compilation include the optimize option?
+
+-->
+
+ <property name="compile.debug" value="true"/>
+ <property name="compile.deprecation" value="false"/>
+ <property name="compile.optimize" value="true"/>
+
+
+
+<!-- ==================== All Target ====================================== -->
+
+<!--
+
+ The "all" target is a shortcut for running the "clean" target followed
+ by the "compile" target, to force a complete recompile.
+
+-->
+
+ <target name="all" depends="clean,compile"
+ description="Clean build and dist directories, then compile"/>
+
+
+
+<!-- ==================== Clean Target ==================================== -->
+
+<!--
+
+ The "clean" target deletes any previous "build" and "dist" directory,
+ so that you can be ensured the application can be built from scratch.
+
+-->
+
+ <target name="clean"
+ description="Delete old build and dist directories">
+ <delete dir="${build.home}"/>
+ <delete dir="${dist.home}"/>
+ </target>
+
+
+
+<!-- ==================== Compile Target ================================== -->
+
+<!--
+
+ The "compile" target transforms source files (from your "src" directory)
+ into object files in the appropriate location in the build directory.
+ This example assumes that you will be including your classes in an
+ unpacked directory hierarchy under "/WEB-INF/classes".
+
+-->
+
+ <target name="compile" depends="prepare"
+ description="Compile Java sources">
+
+ <!-- Compile Java classes as necessary -->
+ <mkdir dir="${build.home}/WEB-INF/classes"/>
+ <javac srcdir="${src.home}"
+ destdir="${build.home}/WEB-INF/classes"
+ debug="${compile.debug}"
+ deprecation="${compile.deprecation}"
+ optimize="${compile.optimize}">
+ <classpath refid="compile.classpath"/>
+ </javac>
+
+ <!-- Copy application resources -->
+ <copy todir="${build.home}/WEB-INF/classes">
+ <fileset dir="${src.home}" excludes="**/*.java"/>
+ </copy>
+
+ </target>
+
+
+
+<!-- ==================== Dist Target ===================================== -->
+
+
+<!--
+
+ The "dist" target creates a binary distribution of your application
+ in a directory structure ready to be archived in a tar.gz or zip file.
+ Note that this target depends on two others:
+
+ * "compile" so that the entire web application (including external
+ dependencies) will have been assembled
+
+ * "javadoc" so that the application Javadocs will have been created
+
+-->
+
+ <target name="dist" depends="compile,javadoc"
+ description="Create binary distribution">
+
+ <!-- Copy documentation subdirectories -->
+ <mkdir dir="${dist.home}/docs"/>
+ <copy todir="${dist.home}/docs">
+ <fileset dir="${docs.home}"/>
+ </copy>
+
+ <!-- Create application JAR file -->
+ <jar jarfile="${dist.home}/${app.name}-${app.version}.war"
+ basedir="${build.home}"/>
+
+ <!-- Copy additional files to ${dist.home} as necessary -->
+
+ </target>
+
+
+
+<!-- ==================== Install Target ================================== -->
+
+<!--
+
+ The "install" target tells the specified Tomcat 6 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
+ this web application.
+
+ If you have already installed this application, and simply want Tomcat to
+ recognize that you have updated Java classes (or the web.xml file), use the
+ "reload" target instead.
+
+ NOTE: This target will only succeed if it is run from the same server that
+ Tomcat is running on.
+
+ NOTE: This is the logical opposite of the "remove" target.
+
+-->
+
+ <target name="install" depends="compile"
+ description="Install application to servlet container">
+
+ <deploy url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"
+ localWar="file://${build.home}"/>
+
+ </target>
+
+
+<!-- ==================== Javadoc Target ================================== -->
+
+<!--
+
+ The "javadoc" target creates Javadoc API documentation for the Java
+ classes included in your application. Normally, this is only required
+ when preparing a distribution release, but is available as a separate
+ target in case the developer wants to create Javadocs independently.
+
+-->
+
+ <target name="javadoc" depends="compile"
+ description="Create Javadoc API documentation">
+
+ <mkdir dir="${dist.home}/docs/api"/>
+ <javadoc sourcepath="${src.home}"
+ destdir="${dist.home}/docs/api"
+ packagenames="*">
+ <classpath refid="compile.classpath"/>
+ </javadoc>
+
+ </target>
+
+
+
+<!-- ====================== List Target =================================== -->
+
+<!--
+
+ The "list" target asks the specified Tomcat 6 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.
+
+-->
+
+ <target name="list"
+ description="List installed applications on servlet container">
+
+ <list url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"/>
+
+ </target>
+
+
+<!-- ==================== Prepare Target ================================== -->
+
+<!--
+
+ The "prepare" target is used to create the "build" destination directory,
+ and copy the static contents of your web application to it. If you need
+ to copy static files from external dependencies, you can customize the
+ contents of this task.
+
+ Normally, this task is executed indirectly when needed.
+
+-->
+
+ <target name="prepare">
+
+ <!-- Create build directories as needed -->
+ <mkdir dir="${build.home}"/>
+ <mkdir dir="${build.home}/WEB-INF"/>
+ <mkdir dir="${build.home}/WEB-INF/classes"/>
+
+
+ <!-- Copy static content of this web application -->
+ <copy todir="${build.home}">
+ <fileset dir="${web.home}"/>
+ </copy>
+
+ <!-- Copy external dependencies as required -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+ <mkdir dir="${build.home}/WEB-INF/lib"/>
+<!--
+ <copy todir="${build.home}/WEB-INF/lib" file="${foo.jar}"/>
+-->
+
+ <!-- Copy static files from external dependencies as needed -->
+ <!-- *** CUSTOMIZE HERE AS REQUIRED BY YOUR APPLICATION *** -->
+
+ </target>
+
+
+<!-- ==================== Reload Target =================================== -->
+
+<!--
+
+ The "reload" signals the specified application Tomcat 6 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
+ /WEB-INF/lib directory.
+
+ 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.
+
+-->
+
+ <target name="reload" depends="compile"
+ description="Reload application on servlet container">
+
+ <reload url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"/>
+
+ </target>
+
+
+<!-- ==================== Remove Target =================================== -->
+
+<!--
+
+ The "remove" target tells the specified Tomcat 6 installation to dynamically
+ remove this web application from service.
+
+ NOTE: This is the logical opposite of the "install" target.
+
+-->
+
+ <target name="remove"
+ description="Remove application on servlet container">
+
+ <undeploy url="${manager.url}"
+ username="${manager.username}"
+ password="${manager.password}"
+ path="${app.path}"/>
+
+ </target>
+
+
+</project>
diff --git a/webapps/docs/appdev/sample/docs/README.txt b/webapps/docs/appdev/sample/docs/README.txt
new file mode 100644
index 0000000..e6d7eab
--- /dev/null
+++ b/webapps/docs/appdev/sample/docs/README.txt
@@ -0,0 +1,17 @@
+ 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.
+
+This is a dummy README file for the sample
+web application.
diff --git a/webapps/docs/appdev/sample/index.html b/webapps/docs/appdev/sample/index.html
new file mode 100644
index 0000000..a3db667
--- /dev/null
+++ b/webapps/docs/appdev/sample/index.html
@@ -0,0 +1,46 @@
+<!--
+ 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>
+<head>
+<meta name="author" content="Ben Souther" />
+<title>Sample Application</title>
+</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
+ 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
+ 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
+ with the <b>jar</b> command.
+ </p>
+ <pre>
+ jar -xvf sample.war
+ </pre>
+</body>
+</html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/sample/sample.war b/webapps/docs/appdev/sample/sample.war
new file mode 100644
index 0000000..0a127e6
--- /dev/null
+++ b/webapps/docs/appdev/sample/sample.war
Binary files differ
diff --git a/webapps/docs/appdev/sample/src/mypackage/Hello.java b/webapps/docs/appdev/sample/src/mypackage/Hello.java
new file mode 100644
index 0000000..47bba7c
--- /dev/null
+++ b/webapps/docs/appdev/sample/src/mypackage/Hello.java
@@ -0,0 +1,84 @@
+/*
+ * 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 mypackage;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+import javax.servlet.http.HttpServletResponse;
+
+
+/**
+ * Simple servlet to validate that the Hello, World example can
+ * execute servlets. In the web application deployment descriptor,
+ * this servlet must be mapped to correspond to the link in the
+ * "index.html" file.
+ *
+ * @author Craig R. McClanahan <Craig.McClanahan@eng.sun.com>
+ */
+
+public final class Hello extends HttpServlet {
+
+ private static final long serialVersionUID = 1L;
+
+ /**
+ * Respond to a GET request for the content produced by
+ * this servlet.
+ *
+ * @param request The servlet request we are processing
+ * @param response The servlet response we are producing
+ *
+ * @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();
+
+ 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("</body>");
+ writer.println("</html>");
+
+ }
+
+
+}
diff --git a/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
new file mode 100644
index 0000000..7fe1af0
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/WEB-INF/web.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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.
+-->
+<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"
+ version="2.4">
+
+ <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.
+ </description>
+
+ <servlet>
+ <servlet-name>HelloServlet</servlet-name>
+ <servlet-class>mypackage.Hello</servlet-class>
+ </servlet>
+
+ <servlet-mapping>
+ <servlet-name>HelloServlet</servlet-name>
+ <url-pattern>/hello</url-pattern>
+ </servlet-mapping>
+
+</web-app>
diff --git a/webapps/docs/appdev/sample/web/hello.jsp b/webapps/docs/appdev/sample/web/hello.jsp
new file mode 100644
index 0000000..de7f0ea
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/hello.jsp
@@ -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.
+-->
+<html>
+<head>
+<title>Sample Application JSP Page</title>
+</head>
+<body bgcolor=white>
+
+<table border="0">
+<tr>
+<td align=center>
+<img src="images/tomcat.gif">
+</td>
+<td>
+<h1>Sample Application JSP Page</h1>
+This is the output of a JSP page that is part of the Hello, World
+application.
+</td>
+</tr>
+</table>
+
+<%= new String("Hello!") %>
+
+</body>
+</html>
diff --git a/webapps/docs/appdev/sample/web/images/tomcat.gif b/webapps/docs/appdev/sample/web/images/tomcat.gif
new file mode 100644
index 0000000..32f7d80
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/images/tomcat.gif
Binary files differ
diff --git a/webapps/docs/appdev/sample/web/index.html b/webapps/docs/appdev/sample/web/index.html
new file mode 100644
index 0000000..1cbcd63
--- /dev/null
+++ b/webapps/docs/appdev/sample/web/index.html
@@ -0,0 +1,44 @@
+<!--
+ 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>
+<head>
+<title>Sample "Hello, World" Application</title>
+</head>
+<body bgcolor=white>
+
+<table border="0">
+<tr>
+<td>
+<img src="images/tomcat.gif">
+</td>
+<td>
+<h1>Sample "Hello, World" Application</h1>
+<p>This is the home page for a sample application used to illustrate the
+source directory organization of a web application utilizing the principles
+outlined in the Application Developer's Guide.
+</td>
+</tr>
+</table>
+
+<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>
+<li>To a <a href="hello">servlet</a>.</li>
+</ul>
+
+</body>
+</html>
diff --git a/webapps/docs/appdev/source.html b/webapps/docs/appdev/source.html
new file mode 100644
index 0000000..cb135d2
--- /dev/null
+++ b/webapps/docs/appdev/source.html
@@ -0,0 +1,327 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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
+ 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>
+
+<p>A key recommendation of this manual is to separate the directory
+hierarchy containing your source code (described in this section) from
+the directory hierarchy containing your deployable application
+(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,
+ 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
+ only source files.
+ <br><br></li>
+<li>The files that make up an installable distribution of your
+ application are much easier to select when the deployment
+ hierarchy is separate.</li>
+</ul>
+
+<p>As we will see, the <code>ant</code> development tool makes the creation
+and processing of such directory hierarchies nearly painless.</p>
+
+<p>The actual directory and file hierarchy used to contain the source code
+of an application can be pretty much anything you like. However, the
+following organization has proven to be quite generally applicable, and is
+expected by the example <code>build.xml</code> configuration file that
+is discussed below. All of these components exist under a top level
+<em>project source directory</em> for your application:</p>
+<ul>
+<li><strong>docs/</strong> - Documentation for your application, in whatever
+ format your development team is using.<br><br></li>
+<li><strong>src/</strong> - Java source files that generate the servlets,
+ beans, and other Java classes that are unique to your application.
+ If your source code is organized in packages (<strong>highly</strong>
+ recommended), the package hierarchy should be reflected as a directory
+ structure underneath this directory.<br><br></li>
+<li><strong>web/</strong> - The static content of your web site (HTML pages,
+ JSP pages, JavaScript files, CSS stylesheet files, and images) that will
+ be accessible to application clients. This directory will be the
+ <em>document root</em> of your web application, and any subdirectory
+ structure found here will be reflected in the request URIs required to
+ 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>),
+ 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
+ subdirectory of your <em>document root</em>, the Servlet Specification
+ prohibits serving the contents of this directory (or any file it contains)
+ directly to a client request. Therefore, this is a good place to store
+ configuration information that is sensitive (such as database connection
+ usernames and passwords), but is required for your application to
+ operate successfully.</li>
+</ul>
+
+<p>During the development process, two additional directories will be
+created on a temporary basis:</p>
+<ul>
+<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 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
+ useful during development, and will be illustrated below.
+ <br><br></li>
+<li><strong>dist/</strong> - When you execute the <code>ant dist</code>
+ target, this directory will be created. It will create an exact image
+ of the binary distribution for your web application, including an license
+ information, documentation, and README files that you have prepared.</li>
+</ul>
+
+<p>Note that these two directories should <strong>NOT</strong> be archived in
+your source code control system, because they are deleted and recreated (from
+scratch) as needed during development. For that reason, you should not edit
+any source files in these directories if you want to maintain a permanent
+record of the changes, because the changes will be lost the next time that a
+build is performed.</p>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="External Dependencies"><!--()--></a><a name="External_Dependencies"><strong>External Dependencies</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>What do you do if your application requires JAR files (or other
+ resources) from external projects or packages? A common example is that
+ you need to include a JDBC driver in your web application, in order to
+ operate.</p>
+
+ <p>Different developers take different approaches to this problem.
+ Some will encourage checking a copy of the JAR files you depend on into
+ the source code control archives for every application that requires those
+ JAR files. However, this can cause significant management issues when you
+ use the same JAR in many applications - particular when faced with a need
+ to upgrade to a different version of that JAR file.</p>
+
+ <p>Therefore, this manual recommends that you <strong>NOT</strong> store
+ a copy of the packages you depend on inside the source control archives
+ of your applications. Instead, the external dependencies should be
+ integrated as part of the process of <strong>building</strong> your
+ application. In that way, you can always pick up the appropriate version
+ of the JAR files from wherever your development system administrator has
+ installed them, without having to worry about updating your application
+ every time the version of the dependent JAR file is changed.</p>
+
+ <p>In the example Ant <code>build.xml</code> file, we will demonstrate
+ how to define <em>build properties</em> that let you configure the locations
+ of the files to be copied, without having to modify <code>build.xml</code>
+ when these files change. The build properties used by a particular
+ developer can be customized on a per-application basis, or defaulted to
+ "standard" build properties stored in the developer's home directory.</p>
+
+ <p>In many cases, your development system administrator will have already
+ installed the required JAR files into the <code>lib</code> directory of Tomcat.
+ If this has been done, you need
+ to take no actions at all - the example <code>build.xml</code> file
+ automatically constructs a compile classpath that includes these files.</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="Source Code Control"><!--()--></a><a name="Source_Code_Control"><strong>Source Code Control</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>As mentioned earlier, it is highly recommended that you place all of the
+source files that comprise your application under the management of a
+source code control system like the Concurrent Version System (CVS). If you
+elect to do this, every directory and file in the source hierarchy should be
+registered and saved -- but none of the generated files. If you register
+binary format files (such as images or JAR libraries), be sure to indicate
+this to your source code control system.</p>
+
+<p>We recommended (in the previous section) that you should not store the
+contents of the <code>build/</code> and <code>dist/</code> directories
+created by your development process in the source code control system. An
+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
+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>
+
+<p>The reason for mentioning <code>build.properties</code> here will be
+explained in the <a href="processes.html">Processes</a> section.</p>
+
+<p>Detailed instructions for your source code control environment are beyond
+the scope of this manual. However, the following steps are followed when
+using a command-line CVS client:</p>
+<ul>
+<li>To refresh the state of your source code to that stored in the
+ the source repository, go to your project source directory, and
+ execute <code>cvs update -dP</code>.
+ <br><br></li>
+<li>When you create a new subdirectory in the source code hierarchy, register
+ it in CVS with a command like <code>cvs add {subdirname}</code>.
+ <br><br></li>
+<li>When you first create a new source code file, navigate to the directory
+ that contains it, and register the new file with a command like
+ <code>cvs add {filename}</code>.
+ <br><br></li>
+<li>If you no longer need a particular source code file, navigate to the
+ containing directory and remove the file. Then, deregister it in CVS
+ with a command like <code>cvs remove {filename}</code>.
+ <br><br></li>
+<li>While you are creating, modifying, and deleting source files, changes
+ are not yet reflected in the server repository. To save your changes in
+ their current state, go to the project source directory
+ and execute <code>cvs commit</code>. You will be asked to write a brief
+ description of the changes you have just completed, which will be stored
+ with the new version of any updated source file.</li>
+</ul>
+
+<p>CVS, like other source code control systems, has many additional features
+(such as the ability to tag the files that made up a particular release, and
+support for multiple development branches that can later be merged). See the
+links and references in the <a href="introduction.html">Introduction</a> for
+more information.</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="BUILD.XML Configuration File"><!--()--></a><a name="BUILD.XML_Configuration_File"><strong>BUILD.XML Configuration File</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>We will be using the <strong>ant</strong> tool to manage the compilation of
+our Java source code files, and creation of the deployment hierarchy. Ant
+operates under the control of a build file, normally called
+<code>build.xml</code>, that defines the processing steps required. This
+file is stored in the top-level directory of your source code hierarchy, and
+should be checked in to your source code control system.</p>
+
+<p>Like a Makefile, the <code>build.xml</code> file provides several
+"targets" that support optional development activities (such as creating
+the associated Javadoc documentation, erasing the deployment home directory
+so you can build your project from scratch, or creating the web application
+archive file so you can distribute your application. A well-constructed
+<code>build.xml</code> file will contain internal documentation describing
+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>
+
+<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
+for your application. This file includes comments that describe the various
+targets that can be executed. Briefly, the following targets are generally
+provided:</p>
+<ul>
+<li><strong>clean</strong> - This target deletes any existing
+ <code>build</code> and <code>dist</code> directories, so that they
+ can be reconstructed from scratch. This allows you to guarantee that
+ you have not made source code modifications that will result in
+ problems at runtime due to not recompiling all affected classes.
+ <br><br></li>
+<li><strong>compile</strong> - This target is used to compile any source code
+ that has been changed since the last time compilation took place. The
+ resulting class files are created in the <code>WEB-INF/classes</code>
+ subdirectory of your <code>build</code> directory, exactly where the
+ structure of a web application requires them to be. Because
+ this command is executed so often during development, it is normally
+ made the "default" target so that a simple <code>ant</code> command will
+ execute it.
+ <br><br></li>
+<li><strong>all</strong> - This target is a short cut for running the
+ <code>clean</code> target, followed by the <code>compile</code> target.
+ Thus, it guarantees that you will recompile the entire application, to
+ ensure that you have not unknowingly introduced any incompatible changes.
+ <br><br></li>
+<li><strong>javadoc</strong> - This target creates Javadoc API documentation
+ for the Java classes in this web application. The example
+ <code>build.xml</code> file assumes you want to include the API
+ documentation with your app distribution, so it generates the docs
+ in a subdirectory of the <code>dist</code> directory. Because you normally
+ do not need to generate the Javadocs on every compilation, this target is
+ usually a dependency of the <code>dist</code> target, but not of the
+ <code>compile</code> target.
+ <br><br></li>
+<li><strong>dist</strong> - This target creates a distribution directory for
+ your application, including any required documentation, the Javadocs for
+ your Java classes, and a web application archive (WAR) file that will be
+ delivered to system administrators who wish to install your application.
+ Because this target also depends on the <code>deploy</code> target, the
+ web application archive will have also picked up any external dependencies
+ that were included at deployment time.</li>
+</ul>
+
+<p>For interactive development and testing of your web application using
+Tomcat, the following additional targets are defined:</p>
+<ul>
+<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 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 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 to remove this
+ application from service.
+ </li>
+</ul>
+
+<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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/appdev/web.xml.txt b/webapps/docs/appdev/web.xml.txt
new file mode 100644
index 0000000..6574742
--- /dev/null
+++ b/webapps/docs/appdev/web.xml.txt
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+ 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 web-app
+ PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
+ "http://java.sun.com/dtd/web-app_2_3.dtd">
+
+<web-app>
+
+
+ <!-- General description of your web application -->
+
+ <display-name>My Web Application</display-name>
+ <description>
+ This is version X.X of an application to perform
+ a wild and wonderful task, based on servlets and
+ JSP pages. It was written by Dave Developer
+ (dave@mycompany.com), who should be contacted for
+ more information.
+ </description>
+
+
+ <!-- Context initialization parameters that define shared
+ String constants used within your application, which
+ can be customized by the system administrator who is
+ installing your application. The values actually
+ assigned to these parameters can be retrieved in a
+ servlet or JSP page by calling:
+
+ String value =
+ getServletContext().getInitParameter("name");
+
+ where "name" matches the <param-name> element of
+ one of these initialization parameters.
+
+ You can define any number of context initialization
+ parameters, including zero.
+ -->
+
+ <context-param>
+ <param-name>webmaster</param-name>
+ <param-value>myaddress@mycompany.com</param-value>
+ <description>
+ The EMAIL address of the administrator to whom questions
+ and comments about this application should be addressed.
+ </description>
+ </context-param>
+
+
+ <!-- Servlet definitions for the servlets that make up
+ your web application, including initialization
+ parameters. With Tomcat, you can also send requests
+ to servlets not listed here with a request like this:
+
+ http://localhost:8080/{context-path}/servlet/{classname}
+
+ but this usage is not guaranteed to be portable. It also
+ makes relative references to images and other resources
+ required by your servlet more complicated, so defining
+ all of your servlets (and defining a mapping to them with
+ a servlet-mapping element) is recommended.
+
+ Servlet initialization parameters can be retrieved in a
+ servlet or JSP page by calling:
+
+ String value =
+ getServletConfig().getInitParameter("name");
+
+ where "name" matches the <param-name> element of
+ one of these initialization parameters.
+
+ You can define any number of servlets, including zero.
+ -->
+
+ <servlet>
+ <servlet-name>controller</servlet-name>
+ <description>
+ This servlet plays the "controller" role in the MVC architecture
+ used in this application. It is generally mapped to the ".do"
+ filename extension with a servlet-mapping element, and all form
+ submits in the app will be submitted to a request URI like
+ "saveCustomer.do", which will therefore be mapped to this servlet.
+
+ The initialization parameter names for this servlet are the
+ "servlet path" that will be received by this servlet (after the
+ filename extension is removed). The corresponding value is the
+ name of the action class that will be used to process this request.
+ </description>
+ <servlet-class>com.mycompany.mypackage.ControllerServlet</servlet-class>
+ <init-param>
+ <param-name>listOrders</param-name>
+ <param-value>com.mycompany.myactions.ListOrdersAction</param-value>
+ </init-param>
+ <init-param>
+ <param-name>saveCustomer</param-name>
+ <param-value>com.mycompany.myactions.SaveCustomerAction</param-value>
+ </init-param>
+ <!-- Load this servlet at server startup time -->
+ <load-on-startup>5</load-on-startup>
+ </servlet>
+
+ <servlet>
+ <servlet-name>graph</servlet-name>
+ <description>
+ This servlet produces GIF images that are dynamically generated
+ graphs, based on the input parameters included on the request.
+ It is generally mapped to a specific request URI like "/graph".
+ </description>
+ </servlet>
+
+
+ <!-- Define mappings that are used by the servlet container to
+ translate a particular request URI (context-relative) to a
+ particular servlet. The examples below correspond to the
+ servlet descriptions above. Thus, a request URI like:
+
+ http://localhost:8080/{contextpath}/graph
+
+ will be mapped to the "graph" servlet, while a request like:
+
+ http://localhost:8080/{contextpath}/saveCustomer.do
+
+ will be mapped to the "controller" servlet.
+
+ You may define any number of servlet mappings, including zero.
+ It is also legal to define more than one mapping for the same
+ servlet, if you wish to.
+ -->
+
+ <servlet-mapping>
+ <servlet-name>controller</servlet-name>
+ <url-pattern>*.do</url-pattern>
+ </servlet-mapping>
+
+ <servlet-mapping>
+ <servlet-name>graph</servlet-name>
+ <url-pattern>/graph</url-pattern>
+ </servlet-mapping>
+
+
+ <!-- Define the default session timeout for your application,
+ in minutes. From a servlet or JSP page, you can modify
+ the timeout for a particular session dynamically by using
+ HttpSession.getMaxInactiveInterval(). -->
+
+ <session-config>
+ <session-timeout>30</session-timeout> <!-- 30 minutes -->
+ </session-config>
+
+
+</web-app>
diff --git a/webapps/docs/apr.html b/webapps/docs/apr.html
new file mode 100644
index 0000000..b9149d0
--- /dev/null
+++ b/webapps/docs/apr.html
@@ -0,0 +1,188 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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
+ 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
+ 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>
+
+ </blockquote></td></tr></table><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>
+ 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>
+
+ <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
+ 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
+ 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>
+
+ <p>
+ 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
+ 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 && make && 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>
+
+ </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>
+ Once the libraries are properly installed and available to Java (if loading fails, the library path
+ will be displayed), the Tomcat connectors will automatically use APR. Configuration of the connectors
+ is similar to the regular connectors, but have a few extra attributes which are used to configure
+ APR components. Note that the defaults should be well tuned for most use cases, and additional
+ tweaking shouldn't be required.
+ </p>
+
+ <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>
+
+ </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>
+ <attribute name="SSLEngine" required="false">
+ <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
+ 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>
+<Listener className="org.apache.catalina.core.AprLifecycleListener" SSLEngine="on" />
+ </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
+ website</a> for more details on SSL hardware engines and manufacturers.
+ </p>
+ </attribute>
+ </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/HTTPS"><strong>HTTP/HTTPS</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>For HTTP configuration, see the <a href="config/http.html">HTTP</a>
+ connector configuration documentation.</p>
+
+ <p>For HTTPS configuration, see the
+ <a href="config/http.html#SSL%20Support">HTTPS</a> connector configuration
+ documentation.</p>
+
+ <p>An example SSL Connector declaration 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>
+ <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" /></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>For AJP configuration, see the <a href="config/ajp.html">AJP</a>
+ connector configuration documentation.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/index.html b/webapps/docs/architecture/index.html
new file mode 100644
index 0000000..9b5a9d4
--- /dev/null
+++ b/webapps/docs/architecture/index.html
@@ -0,0 +1,77 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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
+contributions from several tomcat developers:
+</p>
+<ul>
+<li>Yoav Shapira
+ (<a href="mailto:yoavs@apache.org">yoavs@apache.org</a>)</li>
+<li>Jeanfrancois Arcand
+ (<a href="mailto:jfarcand@apache.org">jfarcand@apache.org</a>)</li>
+<li>Filip Hanik
+ (<a href="mailto:fhanik@apache.org">fhanik@apache.org</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="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The information presented is divided into the following sections:</p>
+<ul>
+<li><a href="overview.html"><strong>Overview</strong></a> -
+ An overview of the Tomcat server architecture with key terms
+ and concepts.</li>
+<li><a href="startup.html"><strong>Server Startup</strong></a> -
+ A detailed description, with sequence diagrams, of how the Tomcat
+ server starts up.</li>
+<li><a href="requestProcess.html"><strong>Request Process Flow</strong></a> -
+ A detailed description of how Tomcat handles a request.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/overview.html b/webapps/docs/architecture/overview.html
new file mode 100644
index 0000000..0faddee
--- /dev/null
+++ b/webapps/docs/architecture/overview.html
@@ -0,0 +1,146 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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>
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Terms"><strong>Terms</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"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+In the Tomcat world, a
+<a href="../config/server.html">Server</a> represents the whole container.
+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>
+</blockquote></td></tr></table>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+A <a href="../config/service.html">Service</a> is an intermediate component
+which lives inside a Server and ties one or more Connectors to exactly one
+Engine. The Service element is rarely customized by users, as the default
+implementation is simple and sufficient:
+<a href="../api/org/apache/catalina/Service.html">Service interface</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="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+An
+<a href="../config/engine.html">Engine</a> represents request processing
+pipeline for a specific Service. As a Service may have multiple Connectors,
+the Engine receives and processes all requests from these connectors, handing
+the response back to the appropriate connector for transmission to the client.
+The <a href="../api/org/apache/catalina/Engine.html">Engine interface</a>
+may be implemented to supply custom Engines, though this is uncommon.
+</p>
+<p>
+Note that the Engine may be used for Tomcat server clustering via the
+jvmRoute parameter. Read the Clustering documentation for more information.
+</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>
+A <a href="../config/host.html">Host</a> is an association of a network name,
+e.g. www.yourcompany.com, to the Tomcat server. An Engine may contain
+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
+<a href="../api/org/apache/catalina/core/StandardHost.html">StandardHost
+implementation</a> provides significant additional functionality.
+</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"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+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,
+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
+Apache HTTPD server. Creating a customized connector is a significant
+effort.
+</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>
+A
+<a href="../config/context.html">Context</a>
+represents a web application. A Host may contain multiple
+contexts, each with a unique path. The
+<a href="../api/org/apache/catalina/Context.html">Context
+interface</a> may be implemented to create custom Contexts, but
+this is rarely the case because the
+<a href="../api/org/apache/catalina/core/StandardContext.html">
+StandardContext</a> provides significant additional functionality.
+</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="Comments"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+Tomcat is designed to be a fast and efficient implementation of the
+Servlet Specification. Tomcat came about as the reference implementation
+of this specification, and has remained rigorous in adhering to the
+specification. At the same time, significant attention has been paid
+to Tomcat's performance and it is now on par with other servlet containers,
+including commercial ones.
+</p>
+<p>
+In recent releases of Tomcat, mostly starting with Tomcat 5,
+we have begun efforts to make more aspects of Tomcat manageable via
+JMX. In addition, the Manager and Admin webapps have been greatly
+enhanced and improved. Manageability is a primary area of concern
+for us as the product matures and the specification becomes more
+stable.
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/requestProcess.html b/webapps/docs/architecture/requestProcess.html
new file mode 100644
index 0000000..9751353
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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
+an incoming request. This process is largely defined by
+the Servlet Specification, which outlines the order
+of events that must take place.
+</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>
+TODO
+</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>
+<p>
+A UML sequence diagram of the request process is available
+<a href="requestProcess/requestProcess.pdf">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>
+<p>
+The Servlet Specification provides many opportunities for
+listening in (using Listeners) or modifying (using Filters)
+the request handling process even before the request arrives
+at the servlet that will handle it.
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/requestProcess/requestProcess.pdf b/webapps/docs/architecture/requestProcess/requestProcess.pdf
new file mode 100644
index 0000000..6a171de
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess/requestProcess.pdf
Binary files differ
diff --git a/webapps/docs/architecture/requestProcess/roseModel.mdl b/webapps/docs/architecture/requestProcess/roseModel.mdl
new file mode 100644
index 0000000..64ef567
--- /dev/null
+++ b/webapps/docs/architecture/requestProcess/roseModel.mdl
@@ -0,0 +1,12921 @@
+
+(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/webapps/docs/architecture/startup.html b/webapps/docs/architecture/startup.html
new file mode 100644
index 0000000..ce2457f
--- /dev/null
+++ b/webapps/docs/architecture/startup.html
@@ -0,0 +1,84 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Architecture (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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:
+<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>
+A text description of the startup procedure is available
+<a href="startup/serverStartup.txt">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="diagram"><strong>diagram</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+A UML sequence diagram of the startup procedure is available
+<a href="startup/serverStartup.pdf">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>
+<p>
+The startup process can be customized in many ways, both
+by modifying Tomcat code and by implementing your own
+LifecycleListeners which are then registered in the server.xml
+configuration file.
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/architecture/startup/serverStartup.pdf b/webapps/docs/architecture/startup/serverStartup.pdf
new file mode 100644
index 0000000..34aa598
--- /dev/null
+++ b/webapps/docs/architecture/startup/serverStartup.pdf
Binary files differ
diff --git a/webapps/docs/architecture/startup/serverStartup.txt b/webapps/docs/architecture/startup/serverStartup.txt
new file mode 100644
index 0000000..36981df
--- /dev/null
+++ b/webapps/docs/architecture/startup/serverStartup.txt
@@ -0,0 +1,138 @@
+ 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.
+
+Tomcat 5 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.
+
+ 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
diff --git a/webapps/docs/balancer-howto.html b/webapps/docs/balancer-howto.html
new file mode 100644
index 0000000..81514b5
--- /dev/null
+++ b/webapps/docs/balancer-howto.html
@@ -0,0 +1,61 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+Please refer to the JK 1.2.x documentation.
+
+</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 Apache HTTP Server 2.x with mod_proxy"><!--()--></a><a name="Using_Apache_HTTP_Server_2.x_with_mod_proxy"><strong>Using Apache HTTP Server 2.x with mod_proxy</strong></a></font></td></tr><tr><td><blockquote>
+
+Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either
+HTTP or AJP load balancing. This new version of mod_proxy is also usable with
+Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code
+from Apache HTTP Server 2.2.
+
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/building.html b/webapps/docs/building.html
new file mode 100644
index 0000000..5ee9662
--- /dev/null
+++ b/webapps/docs/building.html
@@ -0,0 +1,255 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - Building Tomcat</title><meta name="author" content="Remy Maucherat, Tim Whittington"><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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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_a_Java_Development_Kit_(JDK)_version_6">Download a Java Development Kit (JDK) version 6</a></li><li><a href="#Install_Apache_Ant_1.8.1_or_later">Install Apache Ant 1.8.1 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="#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 source is very easy, and is the first step to contributing to
+Tomcat. The following is a 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) version 6"><!--()--></a><a name="Download_a_Java_Development_Kit_(JDK)_version_6"><strong>Download a Java Development Kit (JDK) version 6</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>
+Building Apache Tomcat requires a JDK (version 6) to be installed. You can download one from<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>
+
+<p>
+<b>IMPORTANT</b>: Set an environment variable JAVA_HOME to the pathname of the
+directory into which you installed the JDK release.
+</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.1 or later"><!--()--></a><a name="Install_Apache_Ant_1.8.1_or_later"><strong>Install Apache Ant 1.8.1 or later</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>
+Download a binary distribution of Ant 1.8.1 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
+<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 directory.
+</p>
+
+<p>
+<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
+<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 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 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>
+ 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. 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="Building Tomcat"><!--()--></a><a name="Building_Tomcat"><strong>Building Tomcat</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>
+Use the following commands to build Tomcat:
+<br>
+<code><br>
+ cd ${tomcat.source}<br>
+ ant<br>
+</code>
+</p>
+
+<p>
+<b>WARNING:</b> Running this 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 is likely not 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.
+</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 for details.
+</p>
+
+<p>
+ The build can be controlled by creating a <code>${tomcat.source}/build.properties</code>
+ file and adding the following content to it:
+<br>
+<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>
+</p>
+
+<p>
+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
+provided without warranty :-).
+The only supported means of building Tomcat is with the Ant build described above.
+However, some developers like to work on Java code with a Java IDE,
+and the following steps have been used by some developers.
+</p>
+
+<p>
+<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,
+get warnings, reformat code, perform refactorings, run Tomcat
+under the IDE, and so on.
+</p>
+
+<p>
+<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>
+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>
+An Ant target is provided as a convenience to download all binary dependencies, and to create
+the Eclipse project and classpath files in the root of the source tree.
+<br>
+<code><br>
+ cd ${tomcat.source}<br>
+ ant ide-eclipse<br>
+</code>
+</p>
+
+<p>
+Start Eclipse and create a new Workspace.
+</p>
+
+<p>
+Open the <em>Preferences</em> dialog and then select <em>Java->Build Path->Classpath
+Variables</em> to add two new <em>Classpath Variables</em>:
+</p>
+
+<p>
+<table border="1">
+ <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.1 or later</td></tr>
+</table>
+</p>
+
+<p>
+Use <em>File->Import</em> 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 Tomcat project located there.
+</p>
+
+<p>
+<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->Run Configurations</em>
+dialog. Use these to start and stop Tomcat from Eclipse.
+<br>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>
+Tweaking a few formatting preferences will make it much easier to keep consistent with Tomcat
+coding conventions (and have your contributions accepted):
+</p>
+<p>
+<table border="1">
+ <tr><td>Java -> Code Style -> Formatter -> Edit...</td>
+ <td>Tab policy: Spaces only<br>Tab and Indentation size: 4</td></tr>
+ <tr><td>General -> Editors -> Text Editors</td>
+ <td>Displayed tab width: 2<br>Insert spaces for tabs<br>Show whitespace characters (optional)</td></tr>
+ <tr><td>XML -> XML Files -> Editor</td><td>Indent using spaces<br>Indentation size: 2</td></tr>
+ <tr><td>Ant -> Editor -> Formatter</td><td>Tab size: 2<br>Use tab character instead of spaces: unchecked</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="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 general approach should work for most IDEs; it has been reported
+to work in IntelliJ IDEA, for example.
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/cgi-howto.html b/webapps/docs/cgi-howto.html
new file mode 100644
index 0000000..9e5f407
--- /dev/null
+++ b/webapps/docs/cgi-howto.html
@@ -0,0 +1,111 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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><style type="text/css">
+ code {background-color:rgb(224,255,255);padding:0 0.1em;}
+ code.attributeName, code.propertyName {background-color:transparent;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>The CGI (Common Gateway Interface) defines a way for a web server to
+interact with external content-generating programs, which are often
+referred to as CGI programs or CGI scripts.
+</p>
+
+<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
+Apache httpd.
+Tomcat's CGI support is largely compatible with Apache httpd's,
+but there are some limitations (e.g., only one cgi-bin directory).
+</p>
+
+<p>CGI support is implemented using the servlet class
+<code>org.apache.catalina.servlets.CGIServlet</code>. Traditionally,
+this servlet is mapped to the URL pattern "/cgi-bin/*".</p>
+
+<p>By default CGI support is disabled in 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="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
+
+<p><strong>CAUTION</strong> - CGI scripts are used to execute programs
+external to the Tomcat JVM. If you are using the Java SecurityManager this
+will bypass your security policy configuration in <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>Only Contexts which are marked as privileged may use the CGI servlet (see the
+privileged property of 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="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.
+<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
+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>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>
+<li><strong>passShellEnvironment</strong> - Should the shell environment
+variables (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>
+</ul>
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/changelog.html b/webapps/docs/changelog.html
new file mode 100644
index 0000000..cdabfeb
--- /dev/null
+++ b/webapps/docs/changelog.html
@@ -0,0 +1,7464 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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"><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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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.42 (markt)"><!--()--></a><a name="Tomcat_7.0.42_(markt)"><strong>Tomcat 7.0.42 (markt)</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.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=55073">55073</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55108">55108</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55109">55109</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55110">55110</a>,
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=55158">55158</a> & <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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 Cental 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://issues.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://issues.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>
+</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>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=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>
+ 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>
+ 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=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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54974">54974</a>: Ensure that
+ <code>SessionCookieConfig#set<methods></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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=55046">55046</a>: Add a Servlet Filter that implements
+ <a href="http://www.w3.org/TR/cors/">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://issues.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 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://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ß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://issues.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://issues.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 <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>
+ 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>
+ Improve error message by including specified timeout if failed to
+ retrieve a data sender. (kfujino)
+ </td></tr>
+ <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 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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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=54932">54932</a>: Correct the link to Tribes documentation. (violetagg)
+ </td></tr>
+ <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 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>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://issues.apache.org/bugzilla/show_bug.cgi?id=54178">54178</a>: 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://issues.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://issues.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://issues.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>
+ 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://issues.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=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=54821">54821</a>: Do not attept 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=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://issues.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://issues.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://issues.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>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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54690">54690</a>: Fix a regression caused by the previous fix for
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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>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://issues.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://issues.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://issues.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://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. (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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54438">54438</a>: Fix a regression in the fix for <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54440">54440</a>: Correct a regression caused by the changes for
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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>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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54262">54262</a>: Ensure that an empty
+ <code><absolute-ordering /></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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </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://issues.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://issues.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://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)
+ </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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54241">54241</a>: Revert the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=35410">35410</a> as it was not
+ compliant with the JSP specification, specifically that
+ <code><%= obj %></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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>
+ </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>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://issues.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://issues.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://issues.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://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)
+ </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://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 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://issues.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://issues.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://issues.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>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://issues.apache.org/bugzilla/show_bug.cgi?id=53960">53960</a>, <a href="http://issues.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://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=54096">54096</a>: In web.xml, <env-entry> 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://issues.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>
+ 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>
+ 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=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=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>
+ <a href="http://issues.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>
+ 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>
+ 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 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>
+ 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=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=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 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://issues.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://issues.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=53986">53986</a>: Correct a regression introduced by the fix for
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53713">53713</a>. JSP comments that ended with the sequence ---%> (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://issues.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>: Fix a bug in the tag plug-in for
+ <code><c:out></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://issues.apache.org/bugzilla/show_bug.cgi?id=54011">54011</a>. Simplify generated code for
+ <code><c:out></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://issues.apache.org/bugzilla/show_bug.cgi?id=54012">54012</a>: Fix a bug in the tag plug-in infrastructure that meant
+ the <code><c:set></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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=54144">54144</a>: Fix a bug in the tag plug-in for
+ <code><c:out></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 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>
+ 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://issues.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://issues.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://issues.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>
+</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>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="fix" class="icon" src="./images/fix.gif"></td><td>
+ 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
+ there is no session. Improve session management in the filter.
+ (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.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>
+ 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://issues.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://issues.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>
+ <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=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=53863">53863</a>: Ensure the 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>
+ When the <code>DefaultServlet</code> is under heavy load, the HTTP
+ header parser added to address <a href="http://issues.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=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://issues.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://issues.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://issues.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://issues.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://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 Š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://issues.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://issues.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://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>
+ <a href="http://issues.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://issues.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://issues.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://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>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=53702">53702</a>: When merging web.xml fragments, allow for
+ <code><jsp-property-group></code> elements having multiple
+ <code><url-pattern></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://issues.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://issues.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://issues.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://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=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. (mark)
+ </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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=53697">53697</a>: Correct a regression in the fix for <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.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://issues.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://issues.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://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>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=53450">53450</a>: Correct regression in fix for <a href="http://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=53467">53467</a>: Correct a regression in the fix for <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>
+ 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://issues.apache.org/bugzilla/show_bug.cgi?id=53445">53445</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=53416">53416</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://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)
+ </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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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="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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=53373">53373</a>: Allow whitespace around delimiters in <Context>
+ 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://issues.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://issues.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://issues.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://issues.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 (>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://issues.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://issues.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. (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=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>
+ <a href="http://issues.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://issues.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>
+ Implement <code>maxHeaderCount</code> attribute on Connector.
+ It is equivalent of LimitRequestFields directive of
+ <a href="http://httpd.apache.org/">Apache HTTPD</a>.
+ Default value is 100. (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)/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#c7">48097#c7</a>, <a href="http://issues.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=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 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>
+ 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=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="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 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>
+ Remove obsolete bug warning from Windows service
+ documentation page. (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=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=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://issues.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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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
+ 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>
+ Fix several HTML markup errors in servlets of examples 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=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=53403">53403</a>: Update a reference to the Servlet specification in the
+ first web applciation section of the documentation web application to
+ include newer versions of the specificarion. (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.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=50864">50864</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=53254">53254</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=53367">53367</a> (<a href="http://svn.apache.org/viewvc?view=rev&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>
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=53374">53374</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://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. (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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51741">51741</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://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)
+ </td></tr>
+ <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="code" class="icon" src="./images/code.gif"></td><td>
+ Code clean-up identified by <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52723">52723</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52724">52724</a>,
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52726">52726</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52727">52727</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52729">52729</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52731">52731</a>
+ and <a href="http://issues.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://issues.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://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/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=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://issues.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://issues.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://issues.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://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. 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 — particularly the examples. Contributions were
+ also provided by Petr Praus, Jonathan Drake & Slá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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51237">51237</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=52002">52002</a> (<a href="http://svn.apache.org/viewvc?view=rev&rev=1302948">r1302948</a>):
+ Add in configuration option to disallow connection reuse.
+ (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=52493">52493</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=51893">51893</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=50860">50860</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.apache.org/bugzilla/show_bug.cgi?id=52066">52066</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=52488">52488</a>: Correct typo: exipre -> 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://issues.apache.org/bugzilla/show_bug.cgi?id=52511">52511</a>: Correct regression in the fix for <a href="http://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=52577">52577</a>: Fix a regression in the fix for <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52328">52328</a>.
+ Prevent output truncation when <code>reset()</code> is called on a
+ response. (mark)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>
+ </table>
+ </blockquote></td></tr></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://issues.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://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=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://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>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.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)
+ </td></tr>
+ <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>
+ </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>
+ </table>
+ </blockquote></td></tr></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
+ only after the files are copied, so that <code>INSTALLLICENSE</code>
+ file had correct line ends. (kkolinko)
+ </td></tr>
+ <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>
+ Remove <code>res/License.rtf</code>. The file that is actually shown
+ by the Windows installer is <code>res/INSTALLLICENSE</code>.
+ (kkolinko)
+ </td></tr>
+ <tr><td><img alt="add" class="icon" src="./images/add.gif"></td><td>
+ 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>
+ 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 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="add" class="icon" src="./images/add.gif"></td><td>
+ <a href="http://issues.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=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>
+ 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=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://issues.apache.org/bugzilla/show_bug.cgi?id=52259">52259</a>: Fix regression caused by the addition of the threaded
+ component start (<a href="http://issues.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://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. 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://issues.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://issues.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://issues.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://issues.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://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 '&' characters in parameters as parse errors.
+ (kkolinko)
+ </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. (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=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="update" class="icon" src="./images/update.gif"></td><td>
+ <a href="http://issues.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">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>
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=52335">52335</a>: Only handle <code><\%</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=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://issues.apache.org/bugzilla/show_bug.cgi?id=52445">52445</a>: Don't assume that EL method expressions have
+ exactly three components (identifier, method name, paramaters). (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://issues.apache.org/bugzilla/show_bug.cgi?id=38216">38216</a>: Add the ability to invoke MBean operations to the JMX
+ proxy sevrlet 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://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=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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=52213">52213</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52354">52354</a>, <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=52355">52355</a> and
+ <a href="http://issues.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&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://issues.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 whan 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://issues.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://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. (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=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://issues.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://issues.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://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. (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=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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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 the 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="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>
+ 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="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 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.
+ Also add an option to limit the maximum number of parameters processed
+ per request. This defaults to 10000. Excessive parameters are ignored.
+ 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://issues.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://issues.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://issues.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>
+ <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>
+ 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>
+ 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=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>
+ 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://issues.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://issues.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=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>
+ 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>
+ <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. 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 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>
+ 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=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://issues.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 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="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
+ BackupManager. In BackupManager, change of session ID is replicated by
+ the call of a setId() method. (kfujino)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ 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">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 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 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://issues.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>
+ <a href="http://issues.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>
+ <a href="http://issues.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: 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
+ 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 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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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>
+ 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>
+ 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>
+ 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=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>
+ 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>
+ 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=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>
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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.
+ (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=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://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)
+ </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://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)
+ </td></tr>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.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://issues.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://issues.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 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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=48392">48392</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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. (mark)
+ </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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51583">51583</a> (<a href="http://svn.apache.org/viewvc?view=rev&rev=1157874">r1157874</a>, <a href="http://svn.apache.org/viewvc?view=rev&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://issues.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://issues.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://issues.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 reponse is 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=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=51518">51518</a>: Correct error in web.xml parsing rules for the
+ <others/> 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://issues.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://issues.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://issues.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://issues.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://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>
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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 > 0. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ <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 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://issues.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://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>
+ 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://issues.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://issues.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 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://issues.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://issues.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://issues.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://issues.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://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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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
+ in JULI FileHandler) automatically when it is specified as a part of
+ the file name, e.g. in the <code>prefix</code> attribute. Earlier this
+ happened only if it was specified with the <code>directory</code>
+ 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. (kkolinko)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ 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>
+ 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 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="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, which is not yet released. (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 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>
+ 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>
+ 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
+ (HTTP APR) if sendfile is configured to send more data than is available
+ in the file. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ Prevent NPEs when a socket is closed in non-error conditions after
+ sendfile processing when using the HTTP NIO 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.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 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://issues.apache.org/bugzilla/show_bug.cgi?id=51490">51490</a>: Correct broken HTML in JSP tag plugin examples and
+ improve the <c:if> 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>
+ 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://issues.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://issues.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://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>
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51310">51310</a> caused a regression that re-introduced
+ bug <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51453">51453</a>: Fix a regression in the preemptive authentication
+ support (enhancement <a href="http://issues.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://issues.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://issues.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/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>
+ </table>
+ </blockquote></td></tr></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)/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=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)
+ </td></tr>
+ </table>
+ </blockquote></td></tr></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)/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>
+ 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://issues.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>
+ 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=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=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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51425">51425</a>, <a href="http://issues.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://issues.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://issues.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://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. (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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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ón. (markt)
+ </td></tr>
+ <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>: 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=51182">51182</a>: Document JAAS supported added in <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>
+ </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://issues.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://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. (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=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://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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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é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://issues.apache.org/bugzilla/show_bug.cgi?id=51099">51099</a>: Correctly implement non-default login configurations
+ (configured via the loginConfigName attribute) for the the SPNEGO
+ authenticator. (fhanik/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="add" class="icon" src="./images/add.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://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)
+ </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://issues.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://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="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://issues.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>
+ 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://issues.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://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>
+ </table>
+ </blockquote></td></tr></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>
+ 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
+ Manager application was running web applications that were defined in
+ server.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.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="update" class="icon" src="./images/update.gif"></td><td>
+ Update Apache Commons Pool to 1.5.6. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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 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="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>
+ 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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50991">50991</a>: Fix regression in fix for <a href="http://issues.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://issues.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-singelton 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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="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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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=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://issues.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://issues.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://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 deprecated Embedded
+ class. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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=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://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>
+ </table>
+ </blockquote></td></tr></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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50667">50667</a> (<a href="http://svn.apache.org/viewvc?view=rev&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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://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)
+ </td></tr>
+ <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.
+ 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=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
+ <code>Accept-Language</code> header. This protects from known exploit
+ of the Oracle JVM bug that triggers a DoS, CVE-2010-4476. (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.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>
+ 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>
+ Prvent 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://issues.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=50405">50405</a>: Fix occassional NPE when using NIO connector and
+ Comet. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ 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://issues.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://issues.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 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://issues.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://issues.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://issues.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://issues.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://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>
+ <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://issues.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://issues.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://issues.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>
+ <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=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é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>
+ 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>
+ 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=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://issues.apache.org/bugzilla/show_bug.cgi?id=50526">50526</a>: Provide additional documetation on configuring
+ JavaMail resources. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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>
+ 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>
+ 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://issues.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://issues.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>
+ </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.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="update" class="icon" src="./images/update.gif"></td><td>
+ Update to Apache Commons Daemon 1.0.5. (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.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://issues.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>
+ <a href="http://issues.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>
+ <a href="http://issues.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="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="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 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
+ classes loaded by subordinate class loaders to the web
+ 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
+ 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=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://issues.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=49372">49372</a>: Re-fix after connector re-factoring. If connector
+ initialisation fails (e.g. if a port is alreasy 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=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=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=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>
+ 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://issues.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=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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50541">50541</a>: Add support for setting the size limit and time limit
+ for LDAP seaches 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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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=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://issues.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://issues.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://issues.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://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 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://issues.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://issues.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://issues.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://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 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://issues.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://issues.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://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 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=21157">21157</a>: Ensure cookies are written before the response is
+ commited 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://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="fix" class="icon" src="./images/fix.gif"></td><td>
+ 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://issues.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://issues.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://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="add" class="icon" src="./images/add.gif"></td><td>
+ 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://issues.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://issues.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://issues.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://issues.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://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="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50159">50159</a>: Add a new attribute for <code><Resource></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://issues.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://issues.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=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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50252">50252</a>: Prevent ClassCastException when using a
+ <ResourceLink>. 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://issues.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://issues.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://issues.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://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 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://issues.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://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>
+ 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://issues.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://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="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>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://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. (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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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é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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a>: Re-implement the fix for bug <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=49428">49428</a> –
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=50063">50063</a>: Correct regression in fix for <a href="http://issues.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://issues.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://issues.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://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=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://issues.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://issues.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://issues.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://issues.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://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>
+ 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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://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>: 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://issues.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://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)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49757">49757</a>: Correct some generics warnings. Based on a patch
+ provided by Gábor. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.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://issues.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://issues.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ábor. (markt)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49884">49884</a>: Fix occassional 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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49909">49909</a>: Fix a regression introduced with the fix for
+ <a href="http://issues.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://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=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://issues.apache.org/bugzilla/show_bug.cgi?id=50021">50021</a>: Correct a regression in the fix for <a href="http://issues.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://issues.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://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.
+ (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://issues.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://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=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://issues.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://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=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://issues.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://issues.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://issues.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
+ session before the current request has a chance to send the replication
+ 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=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=49924">49924</a>: When non-primary node changes into a primary node,
+ make sure isPrimarySession is changed to true. (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.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>
+ 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://issues.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="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>
+ 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 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://issues.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://issues.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>
+ 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://issues.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>
+ </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>
+ 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>
+ <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>
+ 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://issues.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://issues.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="add" class="icon" src="./images/add.gif"></td><td>
+ <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=48998">48998</a>, <a href="http://issues.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=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>
+ <a href="http://issues.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://issues.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://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>. 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://issues.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://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. 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>
+ <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://issues.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=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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49528">49528</a>, <a href="http://issues.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://issues.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://issues.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://issues.apache.org/bugzilla/show_bug.cgi?id=49550">49550</a>: Supress 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=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>
+ 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://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)
+ </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://issues.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://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>
+ 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 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://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. (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://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>
+ </table>
+ </blockquote></td></tr></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=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://issues.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://issues.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 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=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=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=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://issues.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://issues.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://issues.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://issues.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://issues.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 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=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>
+ 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://issues.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>
+ 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>
+ 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>
+ Update the re-packaged version of Jakarta BCEL from trunk revision
+ 880760 to trunk revision 978831. (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.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>
+ 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>
+ Improve and document VirtualWebappLoader. (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=43642">43642</a>: Add prestartminSpareThreads attribute for Executor.
+ (jfclere)
+ </td></tr>
+ <tr><td><img alt="update" class="icon" src="./images/update.gif"></td><td>
+ 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>
+ <a href="http://svn.apache.org/viewvc?view=rev&rev=620845">r620845</a> and <a href="http://svn.apache.org/viewvc?view=rev&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://svn.apache.org/viewvc?view=rev&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>
+ <a href="http://svn.apache.org/viewvc?view=rev&rev=677640">r677640</a> Add a startup class that does not require any
+ configuration files. (costin)
+ </td></tr>
+ <tr><td><img alt="fix" class="icon" src="./images/fix.gif"></td><td>
+ <a href="http://svn.apache.org/viewvc?view=rev&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&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>
+ <a href="http://svn.apache.org/viewvc?view=rev&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>
+ 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&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://issues.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>
+ 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 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="update" class="icon" src="./images/update.gif"></td><td>
+ 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&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://issues.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&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&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&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 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&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>
+ <a href="http://issues.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="add" class="icon" src="./images/add.gif"></td><td>
+ <a href="http://issues.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>
+ <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&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&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>
+ <a href="http://svn.apache.org/viewvc?view=rev&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&rev=631321">r631321</a> Update changelog to support the <rev> 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="add" class="icon" src="./images/add.gif"></td><td>
+ 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 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>
+ 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>
+ <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>
+ 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>
+ 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>
+ Parameterize version number throughout build scripts and source. (rjung)
+ </td></tr>
+ </table>
+ </blockquote></td></tr></table>
+</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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/class-loader-howto.html b/webapps/docs/class-loader-howto.html
new file mode 100644
index 0000000..ded6e74
--- /dev/null
+++ b/webapps/docs/class-loader-howto.html
@@ -0,0 +1,239 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>Like many server applications, Tomcat installs a variety of class loaders
+(that is, classes that implement <code>java.lang.ClassLoader</code>) to allow
+different portions of the container, and the web applications running on the
+container, to have access to different repositories of available classes and
+resources. This mechanism is used to provide the functionality defined in the
+Servlet Specification, version 2.4 — in particular, Sections 9.4
+and 9.6.</p>
+
+<p>In a Java environment, class loaders are
+arranged in a parent-child tree. Normally, when a class loader is asked to
+load a particular class or resource, it delegates the request to a parent
+class loader first, and then looks in its own repositories only if the parent
+class loader(s) cannot find the requested class or resource. Note, that the
+model for web application class loaders <em>differs</em> slightly from this,
+as discussed below, but the main principles are the same.</p>
+
+<p>When Tomcat is started, it creates a set of class loaders that are
+organized into the following parent-child relationships, where the parent
+class loader is above the child class loader:</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
+ |
+ 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>
+
+<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
+the following section.</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="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 creates the following class
+loaders as it is initialized:</p>
+<ul>
+<li><p><strong>Bootstrap</strong> — This class loader contains the basic
+ runtime classes provided by the Java Virtual Machine, plus any classes from
+ JAR files present in the System Extensions directory
+ (<code>$JAVA_HOME/jre/lib/ext</code>). <em>Note</em>: some JVMs may
+ implement this as more than one class loader, or it may not be visible
+ (as a class loader) at all.</p></li>
+<li><p><strong>System</strong> — This class loader is normally initialized
+ from the contents of the <code>CLASSPATH</code> environment variable. All
+ such classes are visible to both Tomcat internal classes, and to web
+ applications. However, the standard Tomcat startup scripts
+ (<code>$CATALINA_HOME/bin/catalina.sh</code> or
+ <code>%CATALINA_HOME%\bin\catalina.bat</code>) totally ignore the contents
+ of the <code>CLASSPATH</code> environment variable itself, and instead
+ build the System class loader from the following repositories:
+ </p>
+ <ul>
+ <li><p><em>$CATALINA_HOME/bin/bootstrap.jar</em> — 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> or
+ <em>$CATALINA_HOME/bin/tomcat-juli.jar</em> — 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>
+ <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> — The classes
+ from <a href="http://commons.apache.org/daemon/">Apache Commons
+ 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>
+ </li>
+<li><p><strong>Common</strong> — This class loader contains additional
+ classes that are made visible to both Tomcat internal classes and to all
+ web applications.</p>
+ <p>Normally, application classes should <strong>NOT</strong>
+ be placed here. The locations searched by this class loader are defined by
+ the <code>common.loader</code> property in
+ $CATALINA_BASE/conf/catalina.properties. The default setting will search the
+ following locations in the order they are listed:</p>
+ <ul>
+ <li>unpacked classes and resources in <code>$CATALINA_BASE/lib</code></li>
+ <li>JAR files in <code>$CATALINA_BASE/lib</code></li>
+ <li>unpacked classes and resources in <code>$CATALINA_HOME/lib</code></li>
+ <li>JAR files in <code>$CATALINA_HOME/lib</code></li>
+ </ul>
+ <p>By default, this includes the following:</p>
+ <ul>
+ <li><em>annotations-api.jar</em> — JavaEE annotations classes.</li>
+ <li><em>catalina.jar</em> — Implementation of the Catalina servlet
+ container portion of Tomcat.</li>
+ <li><em>catalina-ant.jar</em> — Tomcat Catalina Ant tasks.</li>
+ <li><em>catalina-ha.jar</em> — High availability package.</li>
+ <li><em>catalina-tribes.jar</em> — Group communication package.</li>
+ <li><em>ecj-*.jar</em> — Eclipse JDT Java compiler.</li>
+ <li><em>el-api.jar</em> — EL 2.2 API.</li>
+ <li><em>jasper.jar</em> — Tomcat Jasper JSP Compiler and Runtime.</li>
+ <li><em>jasper-el.jar</em> — Tomcat Jasper EL implementation.</li>
+ <li><em>jsp-api.jar</em> — JSP 2.2 API.</li>
+ <li><em>servlet-api.jar</em> — Servlet 3.0 API.</li>
+ <li><em>tomcat-api.jar</em> — Several interfaces defined by Tomcat.</li>
+ <li><em>tomcat-coyote.jar</em> — Tomcat connectors and utility classes.</li>
+ <li><em>tomcat-dbcp.jar</em> — Database connection pool
+ implementation based on package-renamed copy of Apache Commons Pool
+ and Apache Commons DBCP.</li>
+ <li><em>tomcat-i18n-**.jar</em> — Optional JARs containing resource bundles
+ for other languages. As default bundles are also included in each
+ individual JAR, they can be safely removed if no internationalization
+ of messages is needed.</li>
+ <li><em>tomcat-jdbc.jar</em> — 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> — Common classes used by various components of
+ Apache Tomcat.</li>
+ </ul></li>
+<li><p><strong>WebappX</strong> — A class loader is created for each web
+ application that is deployed in a single Tomcat instance. All unpacked
+ classes and resources in the <code>/WEB-INF/classes</code> directory of
+ your web application, plus classes and resources in JAR files
+ under the <code>/WEB-INF/lib</code> directory of your web application,
+ are made visible to this web application, but not to other ones.</p></li>
+</ul>
+
+<p>As mentioned above, the web application class loader diverges from the
+default Java delegation model (in accordance with the recommendations in the
+Servlet Specification, version 2.4, section 9.7.2 Web Application Classloader).
+When a request to load a
+class from the web application's <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 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 — Do not include such JARs in your web
+application.
+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>Common class loader classes (described above)</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
+inside the JRE. This has impacts on applications that wish to use their own
+XML parser.</p>
+
+<p>In old versions of Tomcat, you could simply replace the XML parser
+in the Tomcat libraries directory to change the parser
+used by all web applications. However, this technique will not be effective
+when you are running modern versions of Java, because the usual class loader
+delegation process will always choose the implementation inside the JDK in
+preference to this one.</p>
+
+<p>Java supports a mechanism called the "Endorsed Standards Override
+Mechanism" to allow replacement of APIs created outside of the JCP
+(i.e. DOM and SAX from W3C). It can also be used to update the XML parser
+implementation. For more information, see:
+<a href="http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html">
+http://docs.oracle.com/javase/1.5.0/docs/guide/standards/index.html</a>.</p>
+
+<p>Tomcat utilizes this mechanism by including the system property setting
+<code>-Djava.endorsed.dirs=$JAVA_ENDORSED_DIRS</code> in the
+command line that starts the container. The default value of this option is
+<em>$CATALINA_HOME/endorsed</em>. This <em>endorsed</em> directory is not
+created by default.</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="Running under a security manager"><!--()--></a><a name="Running_under_a_security_manager"><strong>Running under a security manager</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>When running under a security manager the locations from which classes
+are permitted to be loaded will also depend on the contents of your policy
+file. See <a href="security-manager-howto.html">Security Manager HOW-TO</a>
+for further information.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/cluster-howto.html b/webapps/docs/cluster-howto.html
new file mode 100644
index 0000000..0712ef5
--- /dev/null
+++ b/webapps/docs/cluster-howto.html
@@ -0,0 +1,683 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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="#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><Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"/></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 your <code><Engine></code> or your <code><Host></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).
+ 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>
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+ channelSendOptions="8">
+
+ <Manager className="org.apache.catalina.ha.session.DeltaManager"
+ expireSessionsOnShutdown="false"
+ notifyListenersOnReplication="true"/>
+
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ <Membership className="org.apache.catalina.tribes.membership.McastService"
+ address="228.0.0.4"
+ port="45564"
+ frequency="500"
+ dropTime="3000"/>
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+ address="auto"
+ port="4000"
+ autoBind="100"
+ selectorTimeout="5000"
+ maxThreads="6"/>
+
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+ </Channel>
+
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
+ filter=""/>
+ <Valve className="org.apache.catalina.ha.session.JvmRouteBinderValve"/>
+
+ <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+ tempDir="/tmp/war-temp/"
+ deployDir="/tmp/war-deploy/"
+ watchDir="/tmp/war-listen/"
+ watchEnabled="false"/>
+
+ <ClusterListener className="org.apache.catalina.ha.session.JvmRouteSessionIDBinderListener"/>
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+ </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>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="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 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>
+ 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><distributable/></code> element</li>
+ <li>If you are using mod_jk, make sure that jvmRoute attribute is set at your Engine <code><Engine name="Catalina" jvmRoute="node01" ></code>
+ and that the jvmRoute attribute value matches your worker name in workers.properties</li>
+ <li>Make sure that all nodes have the same time and sync with NTP service!</li>
+ <li>Make sure that your loadbalancer is configured for sticky session mode.</li>
+</ul>
+<p>Load balancing can be achieved through many techniques, as seen in the
+<a href="balancer-howto.html">Load Balancing</a> chapter.</p>
+<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>
+</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 (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
+ 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
+ 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 > 1.2.8) to build cluster partitions
+ with the potential of having a more scalable cluster solution with the DeltaManager(you'll need to configure the domain interceptor for this).
+ In order to keep the network traffic down in an all-to-all environment, you can split your cluster
+ into smaller groups. This can be easily achieved by using different multicast addresses for the different groups.
+ A very simple setup would look like this:
+ </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
+ |
+ 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>
+
+<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
+ server, and the cluster will distribute the deployments across the entire cluster.
+ This is all capabilities that can go into with the FarmWarDeployer (s. cluster example at <code>server.xml</code>)</p>
+<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
+ changing the multicast IP address or port in the <code><Membership></code> element.
+</p>
+<p>
+ 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>
+ The <code>ReplicationValve</code> is used to find out when the request has been completed and initiate the
+ replication, if any. Data is only replicated if the session has changed (by calling setAttribute or removeAttribute
+ on the session).
+</p>
+<p>
+ One of the most important performance considerations is the synchronous versus asynchronous replication.
+ In a synchronous replication mode the request doesn't return until the replicated session has been
+ sent over the wire and reinstantiated on all the other cluster nodes.
+ Synchronous vs. asynchronous is configured using the <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-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
+ 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>
+ The JvmRouteBinderValve rewrites the session id to ensure that the next request will remain sticky
+ (and not fall back to go to random nodes since the worker is no longer available) after a fail over.
+ The valve rewrites the JSESSIONID value in the cookie with the same name.
+ Not having this valve in place, will make it harder to ensure stickiness in case of a failure for the mod_jk module.
+</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
+ 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.
+</p>
+<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>.
+</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.
+ 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>
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+ channelSendOptions="6">
+
+ <Manager className="org.apache.catalina.ha.session.BackupManager"
+ expireSessionsOnShutdown="false"
+ notifyListenersOnReplication="true"
+ mapSendOptions="6"/>
+ <!--
+ <Manager className="org.apache.catalina.ha.session.DeltaManager"
+ expireSessionsOnShutdown="false"
+ notifyListenersOnReplication="true"/>
+ -->
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ <Membership className="org.apache.catalina.tribes.membership.McastService"
+ address="228.0.0.4"
+ port="45564"
+ frequency="500"
+ dropTime="3000"/>
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+ address="auto"
+ port="5000"
+ selectorTimeout="100"
+ maxThreads="6"/>
+
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
+ </Channel>
+
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
+ filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
+
+ <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+ tempDir="/tmp/war-temp/"
+ deployDir="/tmp/war-deploy/"
+ watchDir="/tmp/war-listen/"
+ watchEnabled="false"/>
+
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+ </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>
+ 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>
+ <Cluster className="org.apache.catalina.ha.tcp.SimpleTcpCluster"
+ channelSendOptions="6">
+ </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 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-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>
+ <Manager className="org.apache.catalina.ha.session.BackupManager"
+ expireSessionsOnShutdown="false"
+ notifyListenersOnReplication="true"
+ mapSendOptions="6"/>
+ <!--
+ <Manager className="org.apache.catalina.ha.session.DeltaManager"
+ expireSessionsOnShutdown="false"
+ notifyListenersOnReplication="true"/>
+ -->
+ </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>
+ This is a template for the manager configuration that will be used if no manager is defined in the <Context>
+ element. In Tomcat 5.x each webapp marked distributable had to use the same manager, this is no longer the case
+ since Tomcat you can define a manager class for each webapp, so that you can mix managers in your cluster.
+ Obviously the managers on one node's application has to correspond with the same manager on the same application on the other node.
+ If no manager has been specified for the webapp, and the webapp is marked <distributable/> Tomcat will take this manager configuration
+ and create a manager instance cloning this configuration.
+ <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>
+ <Channel className="org.apache.catalina.tribes.group.GroupChannel">
+ </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 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>
+ <Membership className="org.apache.catalina.tribes.membership.McastService"
+ address="228.0.0.4"
+ port="45564"
+ frequency="500"
+ dropTime="3000"/>
+ </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>
+ 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 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>
+ <Receiver className="org.apache.catalina.tribes.transport.nio.NioReceiver"
+ address="auto"
+ port="5000"
+ selectorTimeout="100"
+ maxThreads="6"/>
+ </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>
+ In tribes the logic of sending and receiving data has been broken into two functional components. The Receiver, as the name suggests
+ is responsible for receiving messages. Since the Tribes stack is thread less, (a popular improvement now adopted by other frameworks as well),
+ there is a thread pool in this component that has a maxThreads and minThreads setting.<br>
+ 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>
+
+ <Sender className="org.apache.catalina.tribes.transport.ReplicationTransmitter">
+ <Transport className="org.apache.catalina.tribes.transport.nio.PooledParallelSender"/>
+ </Sender>
+ </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 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
+ 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>
+ Concurrently means one message to multiple senders at the same time and Parallel means multiple messages to multiple senders
+ 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>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.TcpFailureDetector"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor"/>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.ThroughputInterceptor"/>
+ </Channel>
+ </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>
+ Tribes uses a stack to send messages through. Each element in the stack is called an interceptor, and works much like the valves do
+ in the Tomcat servlet container.
+ Using interceptors, logic can be broken into more manageable pieces of code. The interceptors configured above are:<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>
+ 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
+ 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>
+ <Valve className="org.apache.catalina.ha.tcp.ReplicationValve"
+ filter=".*\.gif|.*\.js|.*\.jpeg|.*\.jpg|.*\.png|.*\.htm|.*\.html|.*\.css|.*\.txt"/>
+ </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 cluster uses valves to track requests to web applications, we've mentioned the ReplicationValve and the JvmRouteBinderValve above.
+ The <Cluster> element itself is not part of the pipeline in Tomcat, instead the cluster adds the valve to its parent container.
+ If the <Cluster> elements is configured in the <Engine> element, the valves get added to the engine and so on.
+ <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>
+ <Deployer className="org.apache.catalina.ha.deploy.FarmWarDeployer"
+ tempDir="/tmp/war-temp/"
+ deployDir="/tmp/war-deploy/"
+ watchDir="/tmp/war-listen/"
+ watchEnabled="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>
+ <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
+ 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>
+ <ClusterListener className="org.apache.catalina.ha.session.ClusterSessionListener"/>
+ </Cluster>
+ </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>
+ 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
+ |
+ Service
+ |
+ Engine
+ | \
+ | --- Cluster --*
+ |
+ Host
+ |
+ ------
+ / \
+ Cluster Context(1-N)
+ | \
+ | -- Manager
+ | \
+ | -- DeltaManager
+ | -- BackupManager
+ |
+ ---------------------------
+ | \
+ Channel \
+ ----------------------------- \
+ | \
+ Interceptor_1 .. \
+ | \
+ Interceptor_N \
+ ----------------------------- \
+ | | | \
+ Receiver Sender Membership \
+ -- Valve
+ | \
+ | -- ReplicationValve
+ | -- JvmRouteBinderValve
+ |
+ -- LifecycleListener
+ |
+ -- ClusterListener
+ | \
+ | -- ClusterSessionListener
+ | -- JvmRouteSessionIDBinderListener
+ |
+ -- 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>
+
+</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.
+ In the scenario we only plan to use two tomcat instances <code>TomcatA</code> and <code>TomcatB</code>.
+ We will cover the following sequence of events:</p>
+
+<ol>
+<li><code>TomcatA</code> starts up</li>
+<li><code>TomcatB</code> starts up (Wait that TomcatA start is complete)</li>
+<li><code>TomcatA</code> receives a request, a session <code>S1</code> is created.</li>
+<li><code>TomcatA</code> crashes</li>
+<li><code>TomcatB</code> receives a request for session <code>S1</code></li>
+<li><code>TomcatA</code> starts up</li>
+<li><code>TomcatA</code> receives a request, invalidate is called on the session (<code>S1</code>)</li>
+<li><code>TomcatB</code> receives a request, for a new session (<code>S2</code>)</li>
+<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>
+
+<ol>
+<li><b><code>TomcatA</code> starts up</b>
+ <p>
+ Tomcat starts up using the standard start up sequence. When the Host object is created, a cluster object is associated with it.
+ When the contexts are parsed, if the distributable element is in place in web.xml
+ Tomcat asks the Cluster class (in this case <code>SimpleTcpCluster</code>) to create a manager
+ for the replicated context. So with clustering enabled, distributable set in web.xml
+ 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>
+</li>
+<li><b><code>TomcatB</code> starts up</b>
+ <p>
+ When TomcatB starts up, it follows the same sequence as TomcatA did with one exception.
+ The cluster is started and will establish a membership (TomcatA,TomcatB).
+ TomcatB will now request the session state from a server that already exists in the cluster,
+ in this case TomcatA. TomcatA responds to the request, and before TomcatB starts listening
+ for HTTP requests, the state has been transferred from TomcatA to TomcatB.
+ In case TomcatA doesn't respond, TomcatB will time out after 60 seconds, and issue a log
+ entry. The session state gets transferred for each web application that has distributable in
+ its web.xml. Note: To use session replication efficiently, all your tomcat instances should be
+ configured the same.
+ </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
+ 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>
+
+</li>
+<li><b><code>TomcatA</code> crashes</b>
+ <p>
+ When TomcatA crashes, TomcatB receives a notification that TomcatA has dropped out
+ of the cluster. TomcatB removes TomcatA from its membership list, and TomcatA will no longer
+ be notified of any changes that occurs in TomcatB.
+ The load balancer will redirect the requests from TomcatA to TomcatB and all the sessions
+ are current.
+ </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>
+</li>
+<li><b><code>TomcatA</code> starts up</b>
+ <p>Upon start up, before TomcatA starts taking new request and making itself
+ available to it will follow the start up sequence described above 1) 2).
+ It will join the cluster, contact TomcatB for the current state of all the sessions.
+ And once it receives the session state, it finishes loading and opens its HTTP/mod_jk ports.
+ So no requests will make it to TomcatA until it has received the session state from TomcatB.
+ </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.
+ 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>
+
+</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>
+
+
+</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,
+ and the session is queued with invalidated sessions.
+ At this point, the invalidet session will not be replicated across until
+ another request comes through the system and checks the invalid queue.
+ </p><p></p>
+</li>
+</ol>
+
+<p>Phuuuhh! :)</p>
+
+<p><b>Membership</b>
+ Clustering membership is established using very simple multicast pings.
+ Each Tomcat instance will periodically send out a multicast ping,
+ in the ping message the instance will broad cast its IP and TCP listen port
+ for replication.
+ If an instance has not received such a ping within a given timeframe, the
+ member is considered dead. Very simple, and very effective!
+ Of course, you need to enable multicasting on your system.
+</p>
+
+<p><b>TCP Replication</b>
+ Once a multicast ping has been received, the member is added to the cluster
+ Upon the next replication request, the sending instance will use the host and
+ port info and establish a TCP socket. Using this socket it sends over the serialized data.
+ The reason I choose TCP sockets is because it has built in flow control and guaranteed delivery.
+ So I know, when I send some data, it will make it there :)
+</p>
+
+<p><b>Distributed locking and pages using frames</b>
+ 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
+ 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:
+<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 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>
+</p>
+<p>
+List of Cluster Mbeans<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Name</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">MBean ObjectName - Engine</th>
+ <th align="center" bgcolor="aqua">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>
+</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="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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/comments.html b/webapps/docs/comments.html
new file mode 100644
index 0000000..b1ceaa3
--- /dev/null
+++ b/webapps/docs/comments.html
@@ -0,0 +1,122 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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&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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/ajp.html b/webapps/docs/config/ajp.html
new file mode 100644
index 0000000..e2ee9c0
--- /dev/null
+++ b/webapps/docs/config/ajp.html
@@ -0,0 +1,568 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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 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
+ <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. See
+ <a href="http://tomcat.apache.org/connectors-doc/">the JK docs</a>
+ for details.</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> for details.</li>
+ </ul>
+ </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>
+
+ <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>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 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 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 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 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 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 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
+ authenticated. For CLIENT-CERT authentication, the POST is buffered for
+ the duration of the SSL handshake and the buffer emptied when the request
+ is processed. For FORM authentication the POST is saved whilst the user
+ is re-directed to the login form and is retained until the user
+ successfully authenticates or the session associated with the
+ authentication request expires. The limit can be disabled by setting this
+ 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 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 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 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. 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 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.coyote.ajp.AjpProtocol</code>
+ - 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.<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
+ information.</p>
+ </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
+ information.</p>
+ </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><security-constraint></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 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 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 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 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
+ encoding specified in the contentType, or explicitly set using
+ 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 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 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 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>
+ </td></tr></table>
+
+ </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 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>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><strong><font color="red">WARNING</font></strong>: The NIO connector for
+ AJP is experimental.</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">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 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
+ provider is used to perform the conversion. For example it is used with
+ the AJP connectors, the <a href="http.html">HTTP APR connector</a> 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">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.
+ If not specified, the JVM default will be used.</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 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">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 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 not accept any more connections until the number of connections
+ falls below this value. The operating system may still accept
+ connections based on the <code>acceptCount</code> setting. 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">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 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.</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. 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 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 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>
+ </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>
+ </td></tr></table>
+
+ </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 >=0 is equivalent to setting this to <code>true</code>.
+ A value for the standard attribute <strong>connectionLinger</strong>
+ that is <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>
+
+</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>
+
+</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 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/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 Sim Blocking Blocking
+ Read Request Body Blocking Sim Blocking Blocking
+ Write Response Blocking Sim Blocking Blocking
+ Wait for next Request Blocking Non Blocking Non Blocking
+ Max Connections maxConnections maxConnections maxConnections
+
+ </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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-channel.html b/webapps/docs/config/cluster-channel.html
new file mode 100644
index 0000000..30f6c07
--- /dev/null
+++ b/webapps/docs/config/cluster-channel.html
@@ -0,0 +1,105 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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></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
+ 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.
+ 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
+ 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
+ configured here.<br>
+ You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>
+ </p>
+ <p><b><a href="cluster-sender.html#transport">Channel/Sender/Transport</a>:</b> <br>
+ The Transport component is the bottom IO layer for the sender component.
+ The default implementation uses non-blocking TCP client sockets.<br>
+ You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>
+ </p>
+ <p><b><a href="cluster-receiver.html">Channel/Receiver</a>:</b> <br>
+ The receiver component listens for messages from other nodes.
+ Here you will configure the cluster thread pool, as it will dispatch incoming
+ messages to a thread pool for faster processing.
+ The default implementation uses non-blocking TCP server sockets.<br>
+ 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
+ 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>
+</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 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>
+
+
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-deployer.html b/webapps/docs/config/cluster-deployer.html
new file mode 100644
index 0000000..c1c6be6
--- /dev/null
+++ b/webapps/docs/config/cluster-deployer.html
@@ -0,0 +1,103 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>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>
+
+ <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="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 backgrondProcess 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-interceptor.html b/webapps/docs/config/cluster-interceptor.html
new file mode 100644
index 0000000..4454dd9
--- /dev/null
+++ b/webapps/docs/config/cluster-interceptor.html
@@ -0,0 +1,212 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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><li><a href="#Nested_element_StaticMember_Attributes">Nested element 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>
+ <li><code>org.apache.catalina.tribes.group.interceptors.MessageDispatch15Interceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.MessageDispatchInterceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.NonBlockingCoordinator</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.OrderInterceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.SimpleCoordinator</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.TwoPhaseCommitInterceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.DomainFilterInterceptor</code></li>
+ <li><code>org.apache.catalina.tribes.group.interceptors.FragmentationInterceptor</code></li>
+ <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.
+ To achieve this add the <code>org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor</code>
+ 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>
+ <Interceptor className="org.apache.catalina.tribes.group.interceptors.StaticMembershipInterceptor">
+ <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}"/>
+ </Interceptor>
+
+ </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="#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 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.
+ </td></tr></table>
+ </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 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
+ using ISO-8859-1 encoding.<br>
+ 2. byte array in string form, for example {216,123,12,3}<br>
+ </td></tr></table>
+ </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 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 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 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 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 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 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 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 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
+ </td></tr></table>
+ </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 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 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 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 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 milliseconds (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 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 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.
+ default is false.
+ </td></tr></table>
+ </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 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 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"><strong><code class="attributeName">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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-listener.html b/webapps/docs/config/cluster-listener.html
new file mode 100644
index 0000000..01cb6e4
--- /dev/null
+++ b/webapps/docs/config/cluster-listener.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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
+ lets you listen in on messages that are received by the <code>Cluster</code> component.
+ </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
+ 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>
+ <p>
+ Listens for session Id changes. This listener is only used if you are using mod_jk
+ along with the <code>jvmRoute</code> attribute where the session Id can change.
+ In the event of a change, the <code>JvmRouteBinderValve</code> will broadcast the
+ session change and it will get picked up by 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="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 class="attributeName">className</code></strong></td><td align="left" valign="center">
+
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-manager.html b/webapps/docs/config/cluster-manager.html
new file mode 100644
index 0000000..50f59b2
--- /dev/null
+++ b/webapps/docs/config/cluster-manager.html
@@ -0,0 +1,145 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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 <Manager></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>
+</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,
+ <code>org.apache.catalina.Manager</code>.
+ A cluster manager must implement the
+ <code>org.apache.catalina.ha.ClusterManager</code> and is solely responsible
+ for how the session is replicated.<br>
+ There are currently two different managers, the
+ <code>org.apache.catalina.ha.session.DeltaManager</code> replicates deltas of
+ session data to all members in the cluster. This implementation is proven and
+ works very well, but has a limitation as it requires the cluster members to be
+ homogeneous, all nodes must deploy the same applications and be exact
+ replicas. The <code>org.apache.catalina.ha.session.BackupManager</code> also
+ replicates deltas but only to one backup node. The location of the backup node
+ is known to all nodes in the cluster. It also supports heterogeneous
+ deployments, so the manager knows at what locations the web application is
+ deployed.</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="The <Manager>"><!--()--></a><a name="The_<Manager>"><strong>The <Manager></strong></a></font></td></tr><tr><td><blockquote>
+ <p>The <code><Manager></code> element defined inside the
+ <code><Cluster></code> element is the template defined for all web
+ applications that are marked <code><distributable/></code> in their
+ <code>web.xml</code> file. However, you can still override the manager
+ implementation on a per web application basis, by putting the
+ <code><Manager></code> inside the <code><Context></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>
+</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 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 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 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">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></table>
+ </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 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">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 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 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 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></table>
+ </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 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 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 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></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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-membership.html b/webapps/docs/config/cluster-membership.html
new file mode 100644
index 0000000..9398d75
--- /dev/null
+++ b/webapps/docs/config/cluster-membership.html
@@ -0,0 +1,160 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+ The membership component in the Apache Tribes <a href="cluster-channel.html">Channel</a> is responsible
+ for dynamic discovery of other members(nodes) 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="Default Implementation"><!--()--></a><a name="Default_Implementation"><strong>Default Implementation</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ The default implementation of the cluster group notification is built on top of multicast heartbeats
+ sent using UDP packets to a multicast IP address.
+ Cluster members are grouped together by using the same multicast address/port combination.
+ Each member sends out a heartbeat with a given interval (<code>frequency</code>), and this
+ heartbeat is used for dynamic discovery.
+ In a similar fashion, if a heartbeat has not been received in a timeframe specified by <code>dropTime</code>
+ ms. a member is considered suspect and the channel and any membership listener will be notified.
+ </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="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 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 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
+ 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 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
+ 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 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 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
+ 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
+ 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 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 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 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 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 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 class="attributeName">recoveryCounter</code></td><td align="left" valign="center">
+ <p>
+ 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 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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-receiver.html b/webapps/docs/config/cluster-receiver.html
new file mode 100644
index 0000000..5849dd6
--- /dev/null
+++ b/webapps/docs/config/cluster-receiver.html
@@ -0,0 +1,153 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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
+ 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
+ for incoming cluster messages. The receiver is straight forward, but all the socket settings
+ for incoming traffic are managed here.
+ </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
+ 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.
+ Usually the rule is to use 1 thread per node in the cluster for small clusters, and then depending on your message frequency
+ and your hardware, you'll find an optimal number of threads peak out at a certain number.
+ </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 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.bio.BioReceiver</code>.<br>
+ The <code>org.apache.catalina.tribes.transport.nio.NioReceiver</code> is the
+ preferred implementation
+ </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 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 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 <= bindPort < 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
+ 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 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 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 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
+ own test results.
+ </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 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 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 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 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 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 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 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 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 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 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
+ 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>
+ </blockquote></td></tr></table>
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="NioReceiver"><strong>NioReceiver</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="BioReceiver"><strong>BioReceiver</strong></a></font></td></tr><tr><td><blockquote>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-sender.html b/webapps/docs/config/cluster-sender.html
new file mode 100644
index 0000000..3c76712
--- /dev/null
+++ b/webapps/docs/config/cluster-sender.html
@@ -0,0 +1,163 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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.
+ In the default implementation, <code>org.apache.catalina.tribes.transport.ReplicationTransmitter</code>,
+ the sender is a fairly empty shell with not much logic around a fairly complex <code><Transport></code>
+ component the implements the actual delivery mechanism.
+ </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="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".
+ 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
+ "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
+ 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><Transport></code> is is not required, by 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.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 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 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 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 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 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 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 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 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 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
+ <code>maxRetryAttempts</code>.
+ </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 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 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 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 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 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/6/docs/api/java/net/Socket.html#setTrafficClass(int)">
+ java.net.Socket#setTrafficClass(int)</a>.
+ </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 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="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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster-valve.html b/webapps/docs/config/cluster-valve.html
new file mode 100644
index 0000000..99f8a20
--- /dev/null
+++ b/webapps/docs/config/cluster-valve.html
@@ -0,0 +1,102 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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></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>.
+ The cluster valves are interceptors in the invocation chain for HTTP requests, and the clustering implementation
+ uses these valves to make intelligent decision around data and when data should be replicated.
+ </p>
+ <p>
+ A cluster valve must implement the <code>org.apache.catalina.ha.ClusterValve</code> interface.
+ This is a simple interface that extends the <code>org.apache.catalina.Valve</code> interface.
+ </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.tcp.ReplicationValve"><strong>org.apache.catalina.ha.tcp.ReplicationValve</strong></a></font></td></tr><tr><td><blockquote>
+ 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 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 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
+ <code>Boolean.FALSE</code>
+ </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 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
+ <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,
+ 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 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 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></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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/cluster.html b/webapps/docs/config/cluster.html
new file mode 100644
index 0000000..99bcca2
--- /dev/null
+++ b/webapps/docs/config/cluster.html
@@ -0,0 +1,165 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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="#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
+ cluster wide WAR file deployment.
+ While the <code>Cluster</code> configuration is fairly complex, the default configuration will work
+ for most people out of the box. </p><p>
+ 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="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><Cluster></code> element inside either the <code><Engine></code>
+ container or the <code><Host></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><Cluster></code> inside the <code><Engine></code>
+ 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><Context className="org.apache.catalina.ha.context.ReplicatedContext"/></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>
+ 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"><Context></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
+ 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
+ will be done in the channel and its nested components.
+ You can always find out more about <a href="../tribes/introduction.html">Apache Tribes</a>
+ </p>
+ <p><b><a href="cluster-valve.html">Valve</a>:</b> <br>
+ The Tomcat Cluster implementation uses <code>Tomcat <a href="valve.html">Valves</a></code> to
+ track when requests enter and exit the servlet container. It uses these valves to be able to make
+ intelligent decisions on when to replicate data, which is always at the end of a request.
+ </p>
+ <p><b><a href="cluster-deployer.html">Deployer</a>:</b> <br>
+ The Deployer component is the Tomcat Farm Deployer. It allows you to deploy and undeploy applications
+ cluster wide.
+ </p>
+ <p><b><a href="cluster-listener.html">ClusterListener</a>:</b> <br>
+ ClusterListener's are used to track messages sent and received using the <code>SimpleTcpCluster</code>.
+ If you wish to track messages, you can add a listener here, or you can add a valve to the channel object.
+ </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 configuration options"><!--()--></a><a name="Deprecated_configuration_options"><strong>Deprecated configuration options</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ <b>Deprecated settings:</b> In the previous version of Tomcat you were able to control session
+ manager settings using manager.<property>=value.
+ 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 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 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>
+ <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>
+ 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 class="attributeName">channelStartOptions</code></td><td align="left" valign="center">
+ <p>Sets the start and stop flags for the <Channel> object used by the cluster.
+ 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>
+ that equals to <code>3</code>.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">heartbeatBackgroundEnabled</code></td><td align="left" valign="center">
+ <p>Enable this flag don't forget to disable the channel heartbeat thread.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">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 class="attributeName">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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/context.html b/webapps/docs/config/context.html
new file mode 100644
index 0000000..a4d4912
--- /dev/null
+++ b/webapps/docs/config/context.html
@@ -0,0 +1,1261 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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><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.
+ </em></p></blockquote>
+
+ <p>The <strong>Context</strong> element represents a <em>web
+ application</em>, which is run within a particular virtual host.
+ Each web application is based on a <em>Web Application Archive</em>
+ (WAR) file, or a corresponding directory containing the corresponding
+ unpacked contents, as described in the Servlet Specification (version
+ 2.2 or later). For more information about web application archives,
+ you can download the
+ <a href="http://wiki.apache.org/tomcat/Specifications">Servlet
+ Specification</a>, and review the Tomcat
+ <a href="../appdev/index.html">Application Developer's Guide</a>.</p>
+
+ <p>The web application used to process each HTTP request is selected
+ by Catalina based on matching the longest possible prefix of the
+ 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
+ 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 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 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>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 them 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>
+
+ <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>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 & 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"><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:
+ </p>
+ <ul>
+ <li>Disable autoDeploy and deployOnStartup and define all
+ <strong>Context</strong>s in server.xml</li>
+ <li>Locate the WAR and/or directory outside of the Host's appBase and use
+ a context.xml file with a docBase attribute to define it.</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="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 <Context> 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. 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.</li>
+ <li>In individual files (with a ".xml" extension) in the
+ <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.
+ 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>
+ <li>Inside a <a href="host.html">Host</a> element in the main
+ <code>conf/server.xml</code>.</li>
+ </ul>
+
+ <p>Default <strong>Context</strong> elements may be defined that apply to
+ multiple web applications. Configuration for an individual web application
+ will override anything configured in one of these defaults. Any nested
+ elements, e.g. <Resource> elements, that are defined in a default
+ <strong>Context</strong> will be created once for each
+ <strong>Context</strong> to which the default applies. They will <b>not</b> be
+ shared between <strong>Context</strong> elements.
+ </p>
+ <ul>
+ <li>In the <code>$CATALINA_BASE/conf/context.xml</code> file:
+ the Context element information will be loaded by all web applications.</li>
+ <li>In the
+ <code>$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default</code>
+ file: the Context element information will be loaded by all web applications
+ of that host.</li>
+ </ul>
+
+ <p>With the exception of server.xml, files that define <strong>Context
+ </strong> elements may only define a single <strong>Context</strong> element.
+ </p>
+
+ <p>In addition to explicitly specified Context elements, there are
+ several techniques by which Context elements can be created automatically
+ for you. See <a href="host.html#Automatic_Application_Deployment">
+ Automatic Application Deployment</a> and
+ <a href="host.html#User_Web_Applications">User Web Applications</a>
+ for more information.</p>
+
+ <p>To define multiple contexts that use a single WAR file or directory,
+ use one of the options described in the <a href="#Naming">Naming</a>
+ 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>
+
+ <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 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
+ thread of its parent host.</p>
+ </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 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 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"><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
+ being executed directly from the WAR file). You may specify
+ an absolute pathname for this directory or WAR file, or a pathname
+ that is relative to the <code>appBase</code> directory of the
+ owning <a href="host.html">Host</a>.</p>
+ <p>The value of this field must not be set unless the Context element is
+ defined in server.xml or the <code>docBase</code> is not located under
+ the <a href="host.html">Host</a>'s <code>appBase</code>.</p>
+ <p>If a symbolic link is used for docBase then changes to the
+ 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 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">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 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
+ within a particular <a href="host.html">Host</a> must be unique.
+ If you specify a context path of an empty string (""), you are
+ defining the <em>default</em> web application for this Host, which
+ will process all requests not assigned to other Contexts.</p>
+ <p>This attribute must only be used when statically defining a Context
+ in server.xml. In all other circumstances, the path will be inferred
+ from the filenames used for either the .xml context file or the docBase.
+ </p>
+ <p>Even when statically defining a Context in server.xml, this attribute
+ must not be set unless either the docBase is not located under the
+ <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 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
+ is detected. This feature is very useful during application
+ development, but it requires significant runtime overhead and is
+ not recommended for use on deployed production applications. That's
+ why the default setting for this attribute is <i>false</i>. You
+ 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 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 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 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 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>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePathUsesTrailingSlash</code></td><td align="left" valign="center">
+ <p>Some browsers, such as IE, will send a session cookie for a context
+ with a path of /foo with a request to /foobar. To prevent this, 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/, IE 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 feature will need to be disabled. The default
+ value for this attribute is <code>true.</code> To disable this feature,
+ set the attribute to <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">tldNamespaceAware</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the TLD files
+ XML validation will be namespace-aware. If you turn this flag on,
+ you should probably also turn <code>tldValidation</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 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
+ <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 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>true</code>.</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 class="attributeName">xmlNamespaceAware</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the validation of
+ XML files will be namespace-aware. 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 class="attributeName">xmlValidation</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the XML files
+ will be 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></table>
+
+ </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>Context</strong> is
+ <strong>org.apache.catalina.core.StandardContext</strong>.
+ 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 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
+ of the flag is <code>false</code>.</p>
+ <p><b>NOTE: This flag MUST NOT be set to true 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 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
+ useful 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
+ to <code>true</code> at any one time.</p>
+ </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
+ 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
+ to <code>true</code> at any one time.</p>
+
+ <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">
+ 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
+ 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 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 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 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>
+ (5 seconds).</p>
+ </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 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
+ thread from the current <code>WebappClassLoader</code> to
+ <code>WebappClassLoader#parent</code> to prevent a memory leak. Note
+ that the keep-alive timer thread will stop on its own once the
+ 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 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>
+ </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 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 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 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 >=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 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>. Note that WAR files located outside
+ of a <a href="host.html">Host</a>'s <strong>appBase</strong> are
+ never unpacked.</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 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
+ web application by a servlet context attribute (of type
+ <code>java.io.File</code>) named
+ <code>javax.servlet.context.tempdir</code> as described in the
+ Servlet Specification. If not specified, a suitable directory
+ underneath <code>$CATALINA_BASE/work</code> will be provided.</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>You can nest at most one instance of the following utility components
+ by nesting a corresponding element inside your <strong>Context</strong>
+ element:</p>
+ <ul>
+ <li><a href="loader.html"><strong>Loader</strong></a> -
+ Configure the web application class loader that will be used to load
+ servlet and bean classes for this web application. Normally, the
+ default configuration of the class loader will be sufficient.</li>
+ <li><a href="manager.html"><strong>Manager</strong></a> -
+ Configure the session manager that will be used to create, destroy,
+ and persist HTTP sessions for this web application. Normally, the
+ default configuration of the session manager will be sufficient.</li>
+ <li><a href="realm.html"><strong>Realm</strong></a> -
+ Configure a realm that will allow its
+ database of users, and their associated roles, to be utilized solely
+ for this particular web application. If not specified, this web
+ application will utilize the Realm associated with the owning
+ <a href="host.html">Host</a> or <a href="engine.html">Engine</a>.</li>
+ <li><a href="resources.html"><strong>Resources</strong></a> -
+ 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
+ specified static resource of the web application for updates, and will
+ reload the web application if it is updated. The content of this element
+ must be a string.</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="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="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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>
+
+ </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 Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>When you run a web server, one of the output files normally generated
+ is an <em>access log</em>, which generates one line of information for
+ each request processed by the server, in a standard format. Catalina
+ includes an optional <a href="valve.html">Valve</a> implementation that
+ can create access logs in the same standard format created by web servers,
+ or in any number of custom formats.</p>
+
+ <p>You can ask Catalina to create an access log for all requests
+ processed by an <a href="engine.html">Engine</a>,
+ <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>
+<Context>
+ ...
+ <Valve className="org.apache.catalina.valves.AccessLogValve"
+ prefix="localhost_access_log." suffix=".txt"
+ pattern="common"/>
+ ...
+</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>
+
+ <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+ for more information on the configuration attributes that are
+ supported.</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="Automatic Context Configuration"><!--()--></a><a name="Automatic_Context_Configuration"><strong>Automatic Context Configuration</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you use the standard <strong>Context</strong> implementation,
+ 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.
+ </li>
+ <li>If you have not declared your own <a href="manager.html">Manager</a>
+ element, a standard session manager will be configured.</li>
+ <li>If you have not declared your own <a href="resources.html">Resources</a>
+ element, a standard resources manager will be configured.</li>
+ <li>The web application properties listed in <code>conf/web.xml</code>
+ will be processed as defaults for this web application. This is used
+ to establish default mappings (such as mapping the <code>*.jsp</code>
+ extension to the corresponding JSP servlet), and other standard
+ features that apply to all web applications.</li>
+ <li>The web application properties listed in the
+ <code>/WEB-INF/web.xml</code> resource for this web application
+ will be processed (if this resource exists).</li>
+ <li>If your web application has specified security constraints that might
+ require user authentication, an appropriate Authenticator that
+ implements the login method you have selected will be configured.</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="Context Parameters"><!--()--></a><a name="Context_Parameters"><strong>Context Parameters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can configure named values that will be made visible to the
+ web application as servlet context initialization parameters by nesting
+ <code><Parameter></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>
+<Context>
+ ...
+ <Parameter name="companyName" value="My Company, Incorporated"
+ override="false"/>
+ ...
+</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>
+
+ <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>
+<context-param>
+ <param-name>companyName</param-name>
+ <param-value>My Company, Incorporated</param-value>
+</context-param>
+</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>but does <em>not</em> require modification of the deployment descriptor
+ to customize this value.</p>
+
+ <p>The valid attributes for a <code><Parameter></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 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 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 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><context-param></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 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>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entries"><!--()--></a><a name="Environment_Entries"><strong>Environment Entries</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can configure named values that will be made visible to the
+ web application as environment entry resources, by nesting
+ <code><Environment></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>
+<Context>
+ ...
+ <Environment name="maxExemptions" value="10"
+ type="java.lang.Integer" override="false"/>
+ ...
+</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>
+
+ <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>
+<env-entry>
+ <env-entry-name>maxExemptions</env-entry-name>
+ <env-entry-value>10</env-entry-value>
+ <env-entry-type>java.lang.Integer</env-entry-type>
+</env-entry>
+</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>but does <em>not</em> require modification of the deployment descriptor
+ to customize this value.</p>
+
+ <p>The valid attributes for an <code><Environment></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 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 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 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><env-entry></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 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 a legal value for
+ <code><env-entry-type></code> in the web application deployment
+ 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>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you have implemented a Java object that needs to know when this
+ <strong>Context</strong> is started or stopped, you can declare it by
+ 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.
+ 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>
+<Context>
+ ...
+ <Listener className="com.mycompany.mypackage.MyListener" ... >
+ ...
+</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>
+
+ <p>Note that a Listener can have any number of additional properties
+ that may be configured from this element. Attribute names are matched
+ to corresponding JavaBean property names using the standard property
+ method naming patterns.</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 Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can ask Catalina to check the IP address, or host name, on every
+ 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 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>
+<Context>
+ ...
+ <Valve className="org.apache.catalina.valves.RemoteHostValve"
+ allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ deny="192\.168\.1\.\d+"/>
+ ...
+</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>
+
+ <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>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Definitions"><!--()--></a><a name="Resource_Definitions"><strong>Resource Definitions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can declare the characteristics of the resource
+ to be returned for JNDI lookups of <code><resource-ref></code> and
+ <code><resource-env-ref></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
+ 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>
+<Context>
+ ...
+ <Resource name="jdbc/EmployeeDB" auth="Container"
+ type="javax.sql.DataSource"
+ description="Employees Database for HR Applications"/>
+ ...
+</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>
+
+ <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>
+<resource-ref>
+ <description>Employees Database for HR Applications</description>
+ <res-ref-name>jdbc/EmployeeDB</res-ref-name>
+ <res-ref-type>javax.sql.DataSource</res-ref-type>
+ <res-auth>Container</res-auth>
+</resource-ref>
+</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>but does <em>not</em> require modification of the deployment
+ descriptor to customize this value.</p>
+
+ <p>The valid attributes for a <code><Resource></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 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
+ 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
+ attribute is <strong>required</strong> if the web application
+ will use a <code><resource-ref></code> element in the web
+ application deployment descriptor, but is optional if the
+ application uses a <code><resource-env-ref></code> instead.</p>
+ </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 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 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"><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>
+
+
+ </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>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
+ 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>
+<Context>
+ ...
+ <ResourceLink name="linkToGlobalResource"
+ global="simpleValue"
+ type="java.lang.Integer"
+ ...
+</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>
+
+ <p>The valid attributes for a <code><ResourceLink></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 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 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 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 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>
+
+ <p>When the attribute <code>factory="org.apache.naming.factory.DataSourceLinkFactory"</code> the resource link can be used with
+ two additional attributes to allow a shared data source to be used with different credentials.
+ When these two additional attributes are used in combination with the <code>javax.sql.DataSource</code>
+ type, different contexts can share a global data source with different credentials.
+ 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.
+ </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">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 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>
+ </td></tr></table>
+ <p>Shared Data Source Example:</p>
+ <p><strong>Warning:</strong> This feature works only if the global DataSource
+supports <code>getConnection(username, password)</code> method.
+<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="../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.</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>
+<GlobalNamingResources>
+ ...
+ <Resource name="sharedDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
+ alternateUsernameAllowed="true"
+ username="bar"
+ password="barpass"
+ ...
+ ...
+</GlobalNamingResources>
+
+<Context path="/foo"...>
+ ...
+ <ResourceLink
+ name="appDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ factory="org.apache.naming.factory.DataSourceLinkFactory"
+ username="foo"
+ password="foopass"
+ ...
+</Context>
+<Context path="/bar"...>
+ ...
+ <ResourceLink
+ name="appDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ ...
+</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>
+ <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>.
+ 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>
+ element, and the properties used to configure that object factory.</p>
+
+ <p>The valid attributes for the <code><Transaction></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 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>
+
+ <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 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>
+mywebapp/
+ src/
+ main/
+ java/
+ resources/
+ webapp/
+ WEB-INF/
+ classes/
+ target/
+ classes/
+</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>To deploy such an application (assuming it also uses the log4j maven artefact),
+ the context configuration looks 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 path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp" >
+ <Resources className="org.apache.naming.resources.VirtualDirContext"
+ extraResourcePaths=
+ "/WEB-INF/classes=/Users/theuser/mywebapp/target/classes" />
+ <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" />
+ <JarScanner scanAllDirectories="true" />
+</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>
+
+ <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 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>
+mylib/
+ src/
+ main/
+ java/
+ resources/
+ META-INF/
+ resources/
+ target/
+ classes/
+mymovies/
+mypictures/
+mywebapp/
+ src/
+ main/
+ java/
+ resources/
+ webapp/
+ WEB-INF/
+ classes/
+ target/
+ classes/
+</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 configuration 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"><div class="wrapped-source"><code>
+<Context path="/mywebapp" docBase="/Users/theuser/mywebapp/src/main/webapp" >
+<div>
+ <Resources className="org.apache.naming.resources.VirtualDirContext"
+ <div><p>extraResourcePaths="/WEB-INF/classes=/Users/theuser/mywebapp/target/classes,/pictures=/Users/theuser/mypictures,/movies=/Users/theuser/mymovies"</p></div>
+ <div>/></div>
+</div>
+<div>
+ <Loader className="org.apache.catalina.loader.VirtualWebappLoader"
+ <div><p>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"</p></div>
+ <div>/></div>
+</div>
+<div>
+ <JarScanner scanAllDirectories="true" />
+</div>
+</Context>
+</code></div></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>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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/engine.html b/webapps/docs/config/engine.html
new file mode 100644
index 0000000..a1cd36e
--- /dev/null
+++ b/webapps/docs/config/engine.html
@@ -0,0 +1,251 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+
+ <p>The <strong>Engine</strong> element represents the entire request
+ processing machinery associated with a particular Catalina
+ <a href="service.html">Service</a>. It receives and processes
+ <em>all</em> requests from one or more <strong>Connectors</strong>,
+ and returns the completed response to the Connector for ultimate
+ transmission back to the client.</p>
+
+ <p>Exactly one <strong>Engine</strong> element MUST be nested inside
+ a <a href="service.html">Service</a> element, following all of the
+ corresponding Connector elements associated with this 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="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>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 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 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 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 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 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
+ instance.</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>
+
+
+ <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>Engine</strong> is
+ <strong>org.apache.catalina.core.StandardEngine</strong>.
+ 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></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>You can nest one or more <a href="host.html">Host</a> elements inside
+ this <strong>Engine</strong> element, each representing a different virtual
+ host associated with this server. At least one <a href="host.html">Host</a>
+ is required, and one of the nested <a href="host.html">Hosts</a> MUST
+ have a name that matches the name specified for the
+ <code>defaultHost</code> attribute, listed above.</p>
+
+ <p>You can nest at most one instance of the following utility components
+ by nesting a corresponding element inside your <strong>Engine</strong>
+ element:</p>
+ <ul>
+ <li><a href="realm.html"><strong>Realm</strong></a> -
+ Configure a realm that will allow its
+ database of users, and their associated roles, to be shared across all
+ <a href="host.html">Hosts</a> and <a href="context.html">Contexts</a>
+ nested inside this Engine, unless overridden by a
+ <a href="realm.html">Realm</a> configuration at a lower level.</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="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="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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>
+
+ </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 Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>When you run a web server, one of the output files normally generated
+ is an <em>access log</em>, which generates one line of information for
+ each request processed by the server, in a standard format. Catalina
+ includes an optional <a href="valve.html">Valve</a> implementation that
+ can create access logs in the same standard format created by web servers,
+ or in any number of custom formats.</p>
+
+ <p>You can ask Catalina to create an access log for all requests
+ processed by an <a href="engine.html">Engine</a>,
+ <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>
+<Engine name="Standalone" ...>
+ ...
+ <Valve className="org.apache.catalina.valves.AccessLogValve"
+ prefix="catalina_access_log." suffix=".txt"
+ pattern="common"/>
+ ...
+</Engine>
+</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>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+ for more information on the configuration attributes that are
+ supported.</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="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you have implemented a Java object that needs to know when this
+ <strong>Engine</strong> is started or stopped, you can declare it by
+ 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
+ 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>
+<Engine name="Standalone" ...>
+ ...
+ <Listener className="com.mycompany.mypackage.MyListener" ... >
+ ...
+</Engine>
+</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>Note that a Listener can have any number of additional properties
+ that may be configured from this element. Attribute names are matched
+ to corresponding JavaBean property names using the standard property
+ method naming patterns.</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 Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can ask Catalina to check the IP address, or host name, on every
+ 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 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>
+<Engine name="Standalone" ...>
+ ...
+ <Valve className="org.apache.catalina.valves.RemoteHostValve"
+ allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ deny="192\.168\.1\.\d+"/>
+ ...
+</Engine>
+</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>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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/executor.html b/webapps/docs/config/executor.html
new file mode 100644
index 0000000..1bd7c3e
--- /dev/null
+++ b/webapps/docs/config/executor.html
@@ -0,0 +1,117 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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
+ 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
+ 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>
+</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>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 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 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>
+
+ </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 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 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 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 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 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 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 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 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>After a context is stopped, threads in the pool are renewed. To avoid renewing all threads at the same time,
+ this delay is observed between 2 threads being renewed. Value is in ms, default value is 1000ms.
+ If negative, threads are not renewed.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/filter.html b/webapps/docs/config/filter.html
new file mode 100644
index 0000000..aa3a896
--- /dev/null
+++ b/webapps/docs/config/filter.html
@@ -0,0 +1,1371 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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="#Expires_Filter">Expires Filter</a><ol><li><a href="#Expires_Filter/Introduction">Introduction</a></li><li><a href="#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="#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
+ configured for use with all web applications using
+ <code>$CATALINA_BASE/conf/web.xml</code> or may be configured for individual
+ 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
+ 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>
+
+</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 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>
+<filter>
+ <filter-name>CorsFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
+</filter>
+<filter-mapping>
+ <filter-name>CorsFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+</filter-mapping>
+ </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>
+ <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 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>
+<filter>
+ <filter-name>CorsFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.CorsFilter</filter-class>
+ <init-param>
+ <param-name>cors.allowed.origins</param-name>
+ <param-value>*</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cors.allowed.methods</param-name>
+ <param-value>GET,POST,HEAD,OPTIONS,PUT</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cors.allowed.headers</param-name>
+ <param-value>Content-Type,X-Requested-With,accept,Origin,Access-Control-Request-Method,Access-Control-Request-Headers</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cors.exposed.headers</param-name>
+ <param-value>Access-Control-Allow-Origin,Access-Control-Allow-Credentials</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cors.support.credentials</param-name>
+ <param-value>true</param-value>
+ </init-param>
+ <init-param>
+ <param-name>cors.preflight.maxage</param-name>
+ <param-value>10</param-value>
+ </init-param>
+</filter>
+<filter-mapping>
+ <filter-name>CorsFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+</filter-mapping>
+ </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>
+ <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>
+
+ <p>This filter provides basic CSRF protection for a web application. The
+ filter assumes that it is mapped to <code>/*</code> and that all URLs
+ 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>
+
+ <p>The filter class name for the CSRF Prevention Filter is
+ <strong><code>org.apache.catalina.filters.CsrfPreventionFilter</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/Initialisation parameters"><!--()--></a><a name="CSRF_Prevention_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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 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 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 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="Basic configuration sample"><!--()--></a><a name="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 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>
+<filter>
+ <filter-name>ExpiresFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
+ <init-param>
+ <param-name>ExpiresByType image</param-name>
+ <param-value>access plus 10 minutes</param-value>
+ </init-param>
+ <init-param>
+ <param-name>ExpiresByType text/css</param-name>
+ <param-value>access plus 10 minutes</param-value>
+ </init-param>
+ <init-param>
+ <param-name>ExpiresByType application/javascript</param-name>
+ <param-value>access plus 10 minutes</param-value>
+ </init-param>
+</filter>
+...
+<filter-mapping>
+ <filter-name>ExpiresFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+</filter-mapping>
+
+ </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>
+
+ <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 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>
+<init-param>
+ <param-name>ExpiresDefault</param-name>
+ <param-value><base> [plus] {<num> <type>}*</param-value>
+</init-param>
+
+<init-param>
+ <param-name>ExpiresByType type</param-name>
+ <param-value><base> [plus] {<num> <type>}*</param-value>
+</init-param>
+
+<init-param>
+ <param-name>ExpiresByType type;encoding</param-name>
+ <param-value><base> [plus] {<num> <type>}*</param-value>
+</init-param>
+ </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 <code><base></code> is one of:
+ <ul>
+ <li><code>access</code></li>
+ <li><code>now</code> (equivalent to '<code>access</code>')</li>
+ <li><code>modification</code></li>
+ </ul>
+ </p>
+ <p>
+ The <code>plus</code> keyword is optional. <code><num></code> should be an
+ integer value (acceptable to <code>Integer.parseInt()</code>), and
+ <code><type></code> is one of:
+ <ul>
+ <li><code>years</code></li>
+ <li><code>months</code></li>
+ <li><code>weeks</code></li>
+ <li><code>days</code></li>
+ <li><code>hours</code></li>
+ <li><code>minutes</code></li>
+ <li><code>seconds</code></li>
+ </ul>
+ For example, any of the following directives can be used to make documents
+ expire 1 month after being accessed, by default:
+ </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>
+<init-param>
+ <param-name>ExpiresDefault</param-name>
+ <param-value>access plus 1 month</param-value>
+</init-param>
+
+<init-param>
+ <param-name>ExpiresDefault</param-name>
+ <param-value>access plus 4 weeks</param-value>
+</init-param>
+
+<init-param>
+ <param-name>ExpiresDefault</param-name>
+ <param-value>access plus 30 days</param-value>
+</init-param>
+</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 expiry time can be fine-tuned by adding several '
+<code><num> <type></code>' clauses:
+</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>
+<init-param>
+ <param-name>ExpiresByType text/html</param-name>
+ <param-value>access plus 1 month 15 days 2 hours</param-value>
+</init-param>
+
+<init-param>
+ <param-name>ExpiresByType image/gif</param-name>
+ <param-value>modification plus 5 hours 3 minutes</param-value>
+</init-param>
+ </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>
+ 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 :
+ <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>
+ <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:
+ <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>' -> '<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>' -> '<code>text</code>
+ '),</li>
+ <li><code>ExpiresDefault</code></li>
+ </ol>
+ </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/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 <content-type></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><code></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 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>
+<init-param>
+ <param-name>ExpiresExcludedResponseStatusCodes</param-name>
+ <param-value>302, 500, 503</param-value>
+</init-param>
+</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><i>Sample for ExpiresByType initialization parameter</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>
+<init-param>
+ <param-name>ExpiresByType text/html</param-name>
+ <param-value>access plus 1 month 15 days 2 hours</param-value>
+</init-param>
+
+<init-param>
+ <!-- 2592000 seconds = 30 days -->
+ <param-name>ExpiresByType image/gif</param-name>
+ <param-value>A2592000</param-value>
+</init-param>
+ </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>
+
+ <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 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.filters.ExpiresFilter.level = FINE
+ </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>
+ Sample of initialization log message:
+ </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>
+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]]}]
+ </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>
+ 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 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>
+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
+ </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>
+ Sample of per-request log message where <code>ExpiresFilter</code> does not add
+ an expiration date:
+ </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>
+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
+ </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><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>
+
+ <p>This filter triggers parameters parsing in a request and rejects the
+ request if some parameters were skipped during parameter parsing because
+ of parsing errors or request size limitations (such as
+ <code>maxParameterCount</code> attribute in a
+ <a href="http.html">Connector</a>).
+ This filter can be used to ensure that none parameter values submitted by
+ client are lost.</p>
+
+ <p>Note that parameter parsing may consume the body of an HTTP request, so
+ caution is needed if the servlet protected by this filter uses
+ <code>request.getInputStream()</code> or <code>request.getReader()</code>
+ calls. In general the risk of breaking a web application by adding this
+ filter is not so high, because parameter parsing does check content type
+ of the request before consuming the request body.</p>
+
+ <p>Note, that for the POST requests to be parsed correctly, a
+ <code>SetCharacterEncodingFilter</code> filter must be configured above
+ this one. See CharacterEncoding page in the FAQ for details.</p>
+
+ <p>The request is rejected with HTTP status code 400 (Bad Request).</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="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>
+
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Failed Request Filter/Initialisation parameters"><!--()--></a><a name="Failed_Request_Filter/Initialisation_parameters"><strong>Initialisation parameters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The Failed Request Filter does not support any initialization parameters.</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="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 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>
+ <filter>
+ <filter-name>Remote Address Filter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteAddrFilter</filter-class>
+ <init-param>
+ <param-name>allow</param-name>
+ <param-value>127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1</param-value>
+ </init-param>
+ </filter>
+ <filter-mapping>
+ <filter-name>Remote Address Filter</filter-name>
+ <url-pattern>/*</url-pattern>
+ </filter-mapping>
+</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><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>
+ </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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>RemoteIpFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+ </filter-mapping>
+ </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>
+
+ <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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>protocolHeader</param-name>
+ <param-value>x-forwarded-proto</param-value>
+ </init-param>
+ </filter>
+
+ <filter-mapping>
+ <filter-name>RemoteIpFilter</filter-name>
+ <url-pattern>/*</url-pattern>
+ <dispatcher>REQUEST</dispatcher>
+ </filter-mapping>
+ </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>
+
+ <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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>protocolHeader</param-name>
+ <param-value>x-forwarded-proto</param-value>
+ </init-param>
+ </filter>
+ </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>Request values:
+ <table border="1" cellpadding="5">
+ <tr>
+ <th bgcolor="#023264"><font color="#ffffff">Property</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></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>
+ <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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1|proxy2</param-value>
+ </init-param>
+ </filter>
+ </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>Request values: <table border="1" cellpadding="5">
+ <tr>
+ <th bgcolor="#023264"><font color="#ffffff">Property</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></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>
+ <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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1|proxy2</param-value>
+ </init-param>
+ </filter>
+ </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>Request values: <table border="1" cellpadding="5">
+ <tr>
+ <th bgcolor="#023264"><font color="#ffffff">Property</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></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>
+ <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 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>
+ <filter>
+ <filter-name>RemoteIpFilter</filter-name>
+ <filter-class>org.apache.catalina.filters.RemoteIpFilter</filter-class>
+ <init-param>
+ <param-name>allowedInternalProxies</param-name>
+ <param-value>192\.168\.0\.10|192\.168\.0\.11</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpHeader</param-name>
+ <param-value>x-forwarded-for</param-value>
+ </init-param>
+ <init-param>
+ <param-name>remoteIpProxiesHeader</param-name>
+ <param-value>x-forwarded-by</param-value>
+ </init-param>
+ <init-param>
+ <param-name>trustedProxies</param-name>
+ <param-value>proxy1|proxy2</param-value>
+ </init-param>
+ </filter>
+ </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>Request values: <table border="1" cellpadding="5">
+ <tr>
+ <th bgcolor="#023264"><font color="#ffffff">Property</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value Before RemoteIpFilter</font></th>
+ <th bgcolor="#023264"><font color="#ffffff">Value After RemoteIpFilter</font></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>
+ <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.
+ 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.VerbatimFormmater</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 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>
+<filter>
+ <filter-name>requestdumper</filter-name>
+ <filter-class>
+ org.apache.catalina.filters.RequestDumperFilter
+ </filter-class>
+</filter>
+<filter-mapping>
+ <filter-name>requestdumper</filter-name>
+ <url-pattern>*</url-pattern>
+</filter-mapping>
+ </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 following entries in CATALINA_BASE/conf/logging.properties would
+ create a separate log file for the Request Dumper Filter output.</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>
+# 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
+ </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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/globalresources.html b/webapps/docs/config/globalresources.html
new file mode 100644
index 0000000..d07e8a4
--- /dev/null
+++ b/webapps/docs/config/globalresources.html
@@ -0,0 +1,258 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+
+ <p>The <strong>GlobalNamingResources</strong> element defines the global
+ 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
+ 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"><ResourceLink></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>
+
+</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>
+
+</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="Environment Entries"><!--()--></a><a name="Environment_Entries"><strong>Environment Entries</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can configure named values that will be made visible to all
+ web applications as environment entry resources by nesting
+ <code><Environment></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>
+<GlobalNamingResources ...>
+ ...
+ <Environment name="maxExemptions" value="10"
+ type="java.lang.Integer" override="false"/>
+ ...
+</GlobalNamingResources>
+</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>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>
+<env-entry>
+ <env-entry-name>maxExemptions</env-entry-name>
+ <env-entry-value>10</env-entry-value>
+ <env-entry-type>java.lang.Integer</env-entry-type>
+</env-entry>
+</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>but does <em>not</em> require modification of the deployment descriptor
+ to customize this value.</p>
+
+ <p>The valid attributes for an <code><Environment></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 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 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 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><env-entry></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 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 a legal value for
+ <code><env-entry-type></code> in the web application deployment
+ 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>
+ </td></tr></table>
+
+ </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 Definitions"><!--()--></a><a name="Resource_Definitions"><strong>Resource Definitions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can declare the characteristics of resources
+ to be returned for JNDI lookups of <code><resource-ref></code> and
+ <code><resource-env-ref></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"><ResourceLink></a>
+ elements
+ in the <code><strong><Context></strong></code> element.
+
+ You <strong>MUST</strong> also define any other needed parameters using
+ attributes on the Resource 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>
+<GlobalNamingResources ...>
+ ...
+ <Resource name="jdbc/EmployeeDB" auth="Container"
+ type="javax.sql.DataSource"
+ description="Employees Database for HR Applications"/>
+ ...
+</GlobalNamingResources>
+</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>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>
+<resource-ref>
+ <description>Employees Database for HR Applications</description>
+ <res-ref-name>jdbc/EmployeeDB</res-ref-name>
+ <res-ref-type>javax.sql.DataSource</res-ref-type>
+ <res-auth>Container</res-auth>
+</resource-ref>
+</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>but does <em>not</em> require modification of the deployment
+ descriptor to customize this value.</p>
+
+ <p>The valid attributes for a <code><Resource></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 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
+ application. The value of this attribute must be
+ <code>Application</code> or <code>Container</code>. This
+ attribute is <strong>required</strong> if the web application
+ will use a <code><resource-ref></code> element in the web
+ application deployment descriptor, but is optional if the
+ application uses a <code><resource-env-ref></code> instead.</p>
+ </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 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 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"><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>
+
+
+ </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"><ResourceLink></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>
+
+ <Context>
+ <ResourceLink
+ name="bean/MyBeanFactory"
+ global="bean/MyBeanFactory"
+ type="com.mycompany.MyBean"
+ />
+ </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>
+
+ </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>.
+ 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>
+ element, and the properties used to configure that object factory.</p>
+
+ <p>The valid attributes for the <code><Transaction></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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/host.html b/webapps/docs/config/host.html
new file mode 100644
index 0000000..9f5fffb
--- /dev/null
+++ b/webapps/docs/config/host.html
@@ -0,0 +1,653 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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 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
+ Name Aliases</a> feature discussed below.</p>
+
+ <p>One or more <strong>Host</strong> elements are nested inside an
+ <a href="engine.html">Engine</a> element. Inside the Host element, you
+ can nest <a href="context.html">Context</a> elements for the web
+ applications associated with this virtual host. Exactly one of the Hosts
+ associated with each Engine MUST have a name matching the
+ <code>defaultHost</code> attribute of that Engine.</p>
+
+ <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>
+
+ <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 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>
+
+</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>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 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
+ absolute pathname, 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>webapps</code> will be used.</p>
+ </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/<engine_name>/<host_name></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>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 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
+ engine.</p>
+ </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 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
+ example, and not deploy a .svn or CVS folder that happens to be in the
+ <code>appBase</code>.</p>
+ <p>This regular expression is relative to <code>appBase</code>. It is
+ also <em>anchored</em>, meaning the match is performed against the
+ entire file/directory name. So, <code>foo</code> matches only a file or
+ directory named <code>foo</code> but not <code>foo.war</code>,
+ <code>foobar</code>, or <code>myfooapp</code>. To match anything with
+ "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 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 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 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
+ 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>
+
+
+ <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>Host</strong> is
+ <strong>org.apache.catalina.core.StandardHost</strong>.
+ 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 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 the location defined by the
+ <strong>xmlBase</strong> attribute. The flag's value defaults to
+ <code>true</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
+ error pages which will be generated by Tomcat. This class must
+ implement the
+ <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 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
+ structure, <code>false</code> to run such web applications directly
+ from a WAR file. WAR files located outside of the Host's
+ <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 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
+ use of the Host workDir configuration. This directory will be made
+ visible to servlets in the web application by a servlet context
+ attribute (of type <code>java.io.File</code>) named
+ <code>javax.servlet.context.tempdir</code> as described in the
+ Servlet Specification. If not specified, a suitable directory
+ underneath <code>$CATALINA_BASE/work</code> will be provided.</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>You can nest one or more <a href="context.html">Context</a> elements
+ inside this <strong>Host</strong> element, each representing a different web
+ application associated with this virtual host.</p>
+
+ <p>You can nest at most one instance of the following utility components
+ by nesting a corresponding element inside your <strong>Host</strong>
+ element:</p>
+ <ul>
+ <li><a href="realm.html"><strong>Realm</strong></a> -
+ Configure a realm that will allow its
+ database of users, and their associated roles, to be shared across all
+ <a href="context.html">Contexts</a> nested inside this Host (unless
+ overridden by a <a href="realm.html">Realm</a> configuration
+ at a lower level).</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="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="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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>
+
+ </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 Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>When you run a web server, one of the output files normally generated
+ is an <em>access log</em>, which generates one line of information for
+ each request processed by the server, in a standard format. Catalina
+ includes an optional <a href="valve.html">Valve</a> implementation that
+ can create access logs in the same standard format created by web servers,
+ or in any number of custom formats.</p>
+
+ <p>You can ask Catalina to create an access log for all requests
+ processed by an <a href="engine.html">Engine</a>,
+ <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>
+<Host name="localhost" ...>
+ ...
+ <Valve className="org.apache.catalina.valves.AccessLogValve"
+ prefix="localhost_access_log." suffix=".txt"
+ pattern="common"/>
+ ...
+</Host>
+</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>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+ for more information on the configuration attributes that are
+ supported.</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="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 the Host's <code>xmlBase</code> directory (by
+ default <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><Context></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>
+ If <code>copyXML</code> is <code>true</code> (it is <code>false</code>
+ by default), 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 the Host's <code>xmlBase</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>xmlBase</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>
+ If <code>copyXML</code> is <code>true</code> (it is <code>false</code>
+ by default), any directory within the Hosts's <code>appBase</code>
+ directory that does not have a corresponding context XML descriptor in
+ the Host's <code>xmlBase</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>xmlBase</code> directory and renamed.
+ </li>
+ </ul>
+
+ <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>xmlBase</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>When using automatic deployment, the <code>docBase</code> defined by
+ an XML <a href="context.html">Context</a> file should be outside of the
+ <code>appBase</code> directory. If this is not the case, difficulties
+ may be experienced deploying the web application or the application may
+ 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
+ <code>deployIgnore</code> carefully. Otherwise, the web applications
+ will each be deployed twice, and that may cause problems for the
+ 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="Host Name Aliases"><!--()--></a><a name="Host_Name_Aliases"><strong>Host Name Aliases</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>In many server environments, Network Administrators have configured
+ more than one network name (in the <em>Domain Name Service</em> (DNS)
+ server), that resolve to the IP address of the same server. Normally,
+ each such network name would be configured as a separate
+ <strong>Host</strong> element in <code>conf/server.xml</code>, each
+ with its own set of web applications.</p>
+
+ <p>However, in some circumstances, it is desirable that two or more
+ network names should resolve to the <strong>same</strong> virtual host,
+ running the same set of applications. A common use case for this
+ scenario is a corporate web site, where it is desirable that users
+ be able to utilize either <code>www.mycompany.com</code> or
+ <code>company.com</code> to access exactly the same content and
+ applications.</p>
+
+ <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>
+<Host name="www.mycompany.com" ...>
+ ...
+ <Alias>mycompany.com</Alias>
+ ...
+</Host>
+</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>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
+ same computer that is running this instance of Catalina.</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="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you have implemented a Java object that needs to know when this
+ <strong>Host</strong> is started or stopped, you can declare it by
+ 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
+ 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>
+<Host name="localhost" ...>
+ ...
+ <Listener className="com.mycompany.mypackage.MyListener" ... >
+ ...
+</Host>
+</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>Note that a Listener can have any number of additional properties
+ that may be configured from this element. Attribute names are matched
+ to corresponding JavaBean property names using the standard property
+ method naming patterns.</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 Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can ask Catalina to check the IP address, or host name, on every
+ 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 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>
+<Host name="localhost" ...>
+ ...
+ <Valve className="org.apache.catalina.valves.RemoteHostValve"
+ allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ deny="192\.168\.1\.\d+"/>
+ ...
+</Host>
+</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>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>
+
+
+ <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
+ 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>
+<Host name="localhost" ...>
+ ...
+ <Valve className="org.apache.catalina.authenticator.SingleSignOn"/>
+ ...
+</Host>
+</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 Single Sign On facility operates according to the following rules:
+ </p>
+ <ul>
+ <li>All web applications configured for this virtual host must share the
+ same <a href="realm.html">Realm</a>. In practice, that means you can
+ nest the Realm element inside this Host element (or the surrounding
+ <a href="engine.html">Engine</a> element), but not inside a
+ <a href="context.html">Context</a> element for one of the involved
+ web applications.</li>
+ <li>As long as the user accesses only unprotected resources in any of the
+ web applications on this virtual host, they will not be challenged
+ to authenticate themselves.</li>
+ <li>As soon as the user accesses a protected resource in
+ <strong>any</strong> web application associated with this virtual
+ host, the user will be challenged to authenticate himself or herself,
+ using the login method defined for the web application currently
+ being accessed.</li>
+ <li>Once authenticated, the roles associated with this user will be
+ utilized for access control decisions across <strong>all</strong>
+ of the associated web applications, without challenging the user
+ to authenticate themselves to each application individually.</li>
+ <li>As soon as the user logs out of one web application (for example,
+ by invalidating the corresponding session if form
+ based login is used), the user's sessions in <strong>all</strong>
+ web applications will be invalidated. Any subsequent attempt to
+ access a protected resource in any application will require the
+ user to authenticate himself or herself again.</li>
+ <li>The Single Sign On feature utilizes HTTP cookies to transmit a token
+ that associates each request with the saved user identity, so it can
+ only be utilized in client environments that support cookies.</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="User Web Applications"><!--()--></a><a name="User_Web_Applications"><strong>User Web Applications</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Many web servers can automatically map a request URI starting with
+ a tilde character ("~") and a username to a directory (commonly named
+ <code>public_html</code>) in that user's home directory on the server.
+ You can accomplish the same thing in Catalina by using a special
+ <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>
+<Host name="localhost" ...>
+ ...
+ <Listener className="org.apache.catalina.startup.UserConfig"
+ directoryName="public_html"
+ userClass="org.apache.catalina.startup.PasswdUserDatabase"/>
+ ...
+</Host>
+</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>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>
+<Host name="localhost" ...>
+ ...
+ <Listener className="org.apache.catalina.startup.UserConfig"
+ directoryName="public_html"
+ homeBase=c:\Homes"
+ userClass="org.apache.catalina.startup.HomesUserDatabase"/>
+ ...
+</Host>
+</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 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>
+
+ <p>Successful use of this feature requires recognition of the following
+ considerations:</p>
+ <ul>
+ <li>Each user web application will be deployed with characteristics
+ established by the global and host level default context settings.</li>
+ <li>It is legal to include more than one instance of this Listener
+ element. This would only be useful, however, in circumstances
+ where you wanted to configure more than one "homeBase" directory.</li>
+ <li>The operating system username under which Catalina is executed
+ MUST have read access to each user's web application directory,
+ and all of its contents.</li>
+ </ul>
+
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/http.html b/webapps/docs/config/http.html
new file mode 100644
index 0000000..46c09f1
--- /dev/null
+++ b/webapps/docs/config/http.html
@@ -0,0 +1,1011 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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
+ <strong>Connector</strong> component that supports the HTTP/1.1 protocol.
+ It enables Catalina to function as a stand-alone web server, in addition
+ to its ability to execute servlets and JSP pages. A particular instance
+ of this component listens for connections on a specific TCP port number
+ on the server. One or more such <strong>Connectors</strong> can be
+ configured as part of a single <a href="service.html">Service</a>, each
+ forwarding to the associated <a href="engine.html">Engine</a> to perform
+ request processing and create the response.</p>
+
+ <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), 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
+ are received than can be handled by the currently available request
+ processing threads, additional threads will be created up to the
+ configured maximum (the value of the <code>maxThreads</code> attribute).
+ If still more simultaneous requests are received, they are stacked up
+ inside the server socket created by the <strong>Connector</strong>, up to
+ the configured maximum (the value of the <code>acceptCount</code>
+ attribute). Any further simultaneous requests will receive "connection
+ refused" errors, until resources are available to process them.</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>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 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 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 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 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 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 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
+ authenticated. For CLIENT-CERT authentication, the POST is buffered for
+ the duration of the SSL handshake and the buffer emptied when the request
+ is processed. For FORM authentication the POST is saved whilst the user
+ is re-directed to the login form and is retained until the user
+ successfully authenticates or the session associated with the
+ authentication request expires. The limit can be disabled by setting this
+ 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 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 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 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. 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 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
+ information.</p>
+ </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
+ information.</p>
+ </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><security-constraint></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 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 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 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 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
+ encoding specified in the contentType, or explicitly set using
+ 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 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 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>
+ </td></tr></table>
+
+ </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 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 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.</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">compressableMimeType</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 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
+ causes text data to be compressed), "force" (forces compression in all
+ cases), or a numerical integer value (which is equivalent to "on", but
+ specifies the minimum amount of data before the output is compressed). If
+ the content-length is not known and compression is set to "on" or more
+ aggressive, the output will also be compressed. If not specified, this
+ attribute is set to "off".</p>
+ <p><em>Note</em>: There is a tradeoff between using compression (saving
+ your bandwidth) and using the sendfile feature (saving your CPU cycles).
+ If the connector supports the sendfile feature, e.g. the NIO connector,
+ using sendfile will take precedence over compression. The symptoms will
+ be that static files greater that 48 Kb will be sent uncompressed.
+ You can turn off sendfile by setting <code>useSendfile</code> attribute
+ of the connector, as documented below, or change the sendfile usage
+ threshold in the configuration of the
+ <a href="../default-servlet.html">DefaultServlet</a> in the default
+ <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 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.
+ If not specified, the JVM default will be used.</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. 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).
+ </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">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 not accept any more connections until the number of connections
+ falls below this value. The operating system may still accept
+ connections based on the <code>acceptCount</code> setting. 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">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 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 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 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.</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"><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 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
+ is used. If the application does not specify a value then
+ <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 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 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 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>
+ </td></tr></table>
+
+ </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 >=0 is equivalent to setting this to <code>true</code>.
+ A value for the standard attribute <strong>connectionLinger</strong>
+ that is <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 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.</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. 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><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></table>
+ </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">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 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">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><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>
+
+</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="HTTP/1.1 and HTTP/1.0 Support"><!--()--></a><a name="HTTP/1.1_and_HTTP/1.0_Support"><strong>HTTP/1.1 and HTTP/1.0 Support</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>This <strong>Connector</strong> supports all of the required features
+ of the HTTP/1.1 protocol, as described in RFC 2616, including persistent
+ connections, pipelining, expectations and chunked encoding. If the client
+ (typically a browser) supports only HTTP/1.0, the
+ <strong>Connector</strong> will gracefully fall back to supporting this
+ protocol as well. No special configuration is required to enable this
+ support. The <strong>Connector</strong> also supports HTTP/1.0
+ keep-alive.</p>
+
+ <p>RFC 2616 requires that HTTP servers always begin their responses with
+ the highest HTTP version that they claim to support. Therefore, this
+ <strong>Connector</strong> will always return <code>HTTP/1.1</code> at
+ the beginning of its responses.</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="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="SSL Support"><!--()--></a><a name="SSL_Support"><strong>SSL Support</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can enable SSL support for a particular instance of this
+ <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>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>
+
+ <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 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
+ request. If not specified, a default of <code>false</code> is used. This
+ attribute only has an effect if the JVM does not support RFC 5746 as
+ indicated by the presence of the pseudo-ciphersuite
+ TLS_EMPTY_RENEGOTIATION_INFO_SCSV. This is available JRE/JDK 6 update 22
+ 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">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. 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. 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.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">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 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.</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 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 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.</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>
+ </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 "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"><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>Protocol which may be used for communicating with clients. The default
+ value is <code>all</code>, which is equivalent to <code>SSLv3+TLSv1</code>
+ with other acceptable values being <code>SSLv2</code>,
+ <code>SSLv3</code>, <code>TLSv1</code> and any combination of the three
+ protocols concatenated with a plus sign. Note that the protocol
+ <code>SSLv2</code> is inherently unsafe.</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>
+
+ </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 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 HTTP Request Blocking Non Blocking Blocking
+ Read HTTP Body Blocking Sim Blocking Blocking
+ Write HTTP Response Blocking Sim 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
+
+
+ </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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/index.html b/webapps/docs/config/index.html
new file mode 100644
index 0000000..e8b8596
--- /dev/null
+++ b/webapps/docs/config/index.html
@@ -0,0 +1,107 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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 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>
+
+<p>Tomcat configuration files are formatted as schemaless XML; elements and
+attributes are case-sensitive. Apache Ant-style variable substitution
+is supported; a system property with the name <code>propname</code> may be
+used in a configuration file using the syntax <code>${propname}</code>. All
+system properties are available including those set using the <code>-D</code>
+syntax, those automatically made available by the JVM and those configured in
+the <code>$CATALINA_BASE/conf/catalina.properties</code> file.
+</p>
+
+<p>The configuration element descriptions are organized into the following
+major categories:</p>
+<ul>
+<li><strong>Top Level Elements</strong> - <code><Server></code> is the
+ root element of the entire configuration file, while
+ <code><Service></code> represents a group of Connectors that is
+ associated with an Engine.</li>
+<li><strong>Connectors</strong> - Represent the interface between external
+ clients sending requests to (and receiving responses from) a particular
+ Service.</li>
+<li><strong>Containers</strong> - Represent components whose function is to
+ process incoming requests, and create the corresponding responses.
+ An Engine handles all requests for a Service, a Host handles all requests
+ for a particular virtual host, and a Context handles all requests for a
+ specific web application.</li>
+<li><strong>Nested Components</strong> - Represent elements that can be
+ nested inside the element for a Container. Some elements can be nested
+ inside any Container, while others can only be nested inside a
+ Context.</li>
+</ul>
+
+<p>For each element, the corresponding documentation follows this general
+outline:</p>
+<ul>
+<li><strong>Introduction</strong> - Overall description of this particular
+ component. There will be a corresponding Java <em>interface</em> (in
+ the <code>org.apache.catalina</code> package) that is implemented by one
+ or more standard implementations.</li>
+<li><strong>Attributes</strong> - The set of attributes that are legal for
+ this element. Generally, this will be subdivided into <em>Common</em>
+ attributes that are supported by all implementations of the corresponding
+ Java interface, and <em>Standard Implementation</em> attributes that are
+ specific to a particular Java class that implements this interface.
+ The names of required attributes are <strong>bolded</strong>.</li>
+<li><strong>Nested Components</strong> - Enumerates which of the <em>Nested
+ Components</em> can be legally nested within this element.</li>
+<li><strong>Special Features</strong> - Describes the configuration of a large
+ variety of special features (specific to each element type) that are
+ supported by the standard implementation of this interface.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/jar-scanner.html b/webapps/docs/config/jar-scanner.html
new file mode 100644
index 0000000..974e055
--- /dev/null
+++ b/webapps/docs/config/jar-scanner.html
@@ -0,0 +1,116 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>.
+ 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 class="attributeName">scanAllDirectories</code></td><td align="left" valign="center">
+ <p>If true, any directories found on the classpath will be checked to see
+ if are expanded Jar files. The default is <code>false</code>. Tomcat
+ determines if directory is an expanded JAR file by looking for a META-INF
+ sub-directory. Only if the META-INF sub-directory exists, is the
+ directory 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 true, 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 true, 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 <code>scanClassPath</code> is true and this is true 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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/listeners.html b/webapps/docs/config/listeners.html
new file mode 100644
index 0000000..bf35a7c
--- /dev/null
+++ b/webapps/docs/config/listeners.html
@@ -0,0 +1,459 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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></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></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>,
+ <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
+ documentation 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="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>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 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>
+ </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 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 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>
+
+ <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>
+
+ <p>The <strong>APR Lifecycle Listener</strong> checks for the presence of
+ the APR/native library and loads the library if it is present. For more
+ information see the <a href="../apr.html">APR/native guide</a>.</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>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 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
+ native SSL engine, which must be enabled in the APR/native connector by
+ the use of the <code>SSLEnabled</code> attribute.</p>
+ <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 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 class="attributeName">FIPSMode</code></td><td align="left" valign="center">
+ <p>Set to <code>on</code> to instruct OpenSSL to go into FIPS mode.
+ FIPS mode <em>requires you to have a FIPS-capable OpenSSL library which
+ you must build yourself</em>.
+ FIPS mode also requires Tomcat native library version 1.1.23 or later,
+ which <em>must be built against the FIPS-compatible OpenSSL</em> library.
+ If this attribute is "on", <b>SSLEngine</b> must be enabled as well.
+ The default value is <code>off</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="Jasper Listener - org.apache.catalina.core.JasperListener"><!--()--></a><a name="Jasper_Listener_-_org.apache.catalina.core.JasperListener"><strong>Jasper Listener - org.apache.catalina.core.JasperListener</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The <strong>Jasper Listener</strong> initializes the Jasper 2 JSP engine
+ before any web applications that may use it are loaded. For more
+ information on the Jasper 2 JSP engine see the
+ <a href="../jasper-howto.html">Jasper How To</a>.</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>Jasper 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
+ Global JNDI resources defined in server.xml as part of the <a href="globalresources.html">Global Resources</a> element. Without this
+ listener, none of the Global Resources 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>Global Resources
+ 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="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 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">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>
+ </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>
+ </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>
+
+ </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 rectrictive 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 Executor 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.</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>
+
+</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
+ in <code>$CATALINA_HOME/lib</code>. This jar may be found in the extras
+ directory of the binary download area.</p>
+
+ <p>The <strong>JMX Remote Lifecycle Listener</strong> fixes the ports used by
+ the JMX/RMI Server making things much simpler if you need to connect
+ jconsole or a similar tool to a remote Tomcat instance that is running
+ behind a firewall. Only these ports are configured via the listener. The
+ remainder of the configuration is via the standard system properties for
+ configuring JMX. For further information on configuring JMX see
+ <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/management/agent.html">
+ Monitoring and Management Using JMX</a> included with the Java SDK
+ documentation.</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 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.
+ 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 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 class="attributeName">rmiBindAddress</code></td><td align="left" valign="center">
+ <p>The address of the interface to be used by JMX/RMI server. Setting
+ this option to <code>true</code> is incompatible with setting the system
+ property <code>com.sun.management.jmxremote.ssl</code> to
+ <code>true</code>.</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
+ connections over SSH or similar. Defaults to <code>false</code>.</p>
+ </td></tr></table>
+
+ <h3>Using file-based Authentication and Authorisation</h3>
+
+ <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>
+ <Listener className="org.apache.catalina.mbeans.JmxRemoteLifecycleListener"
+ rmiRegistryPortPlatform="10001" rmiServerPortPlatform="10002" />
+ </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://<hostname>:10002/jndi/rmi://<hostname>: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>
+
+ <h3>Using JAAS</h3>
+
+ <p>If we use the following system properties instead:
+ <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.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
+ </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/login.config containing your choice of JAAS LoginModule implementation, 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>
+ Tomcat { /* should match to the com.sun.management.jmxremote.login.config property */
+
+ /* for illustration purposes only */
+ com.sun.security.auth.module.LdapLoginModule REQUIRED
+ userProvider="ldap://ldap-svr/ou=people,dc=example,dc=com"
+ userFilter="(&(uid={USERNAME})(objectClass=inetOrgPerson))"
+ authzIdentity="admin"
+ debug=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>
+ $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 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>
+
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/loader.html b/webapps/docs/config/loader.html
new file mode 100644
index 0000000..30e658e
--- /dev/null
+++ b/webapps/docs/config/loader.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.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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
+ application class loader</em> that will be used to load Java
+ classes and resources for your web application. Such
+ a class loader must follow the requirements of the Servlet
+ Specification, and load classes from the following locations:</p>
+ <ul>
+ <li>From the <code>/WEB-INF/classes</code> directory inside your
+ web application.</li>
+ <li>From JAR files in the <code>/WEB-INF/lib</code> directory
+ inside your web application.</li>
+ <li>From resources made available by Catalina to all web
+ applications globally.</li>
+ </ul>
+
+ <p>A Loader element MAY be nested inside a <a href="context.html">Context</a>
+ component. If it is not included, a default Loader configuration will be
+ created automatically, which is sufficient for most requirements.</p>
+
+ <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
+ 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>
+
+</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>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 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 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 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
+ is detected. This feature is very useful during application
+ development, but it requires significant runtime overhead and is
+ not recommended for use on deployed production applications. You
+ can use the <a href="../manager-howto.html">Manager</a> web
+ application, however, to trigger reloads of deployed applications
+ on demand.</p>
+
+ <p><strong>NOTE</strong> - The value for this property will be
+ inherited from the <code>reloadable</code> attribute you set on
+ the surrounding <a href="context.html">Context</a> component,
+ and any value you explicitly set here will be replaced.</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>Loader</strong> is
+ <strong>org.apache.catalina.loader.WebappLoader</strong>.
+ 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 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 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>
+ </td></tr></table>
+
+ </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>
+
+ <p>No components may be nested inside a <strong>Loader</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>
+
+ <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 loader is associated with the log category based on its classname.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/manager.html b/webapps/docs/config/manager.html
new file mode 100644
index 0000000..6f4f6c5
--- /dev/null
+++ b/webapps/docs/config/manager.html
@@ -0,0 +1,413 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+
+ <p>The <strong>Manager</strong> element represents the <em>session
+ manager</em> that will be used to create and maintain HTTP sessions
+ as requested by the associated web application.</p>
+
+ <p>A Manager element MAY be nested inside a
+ <a href="context.html">Context</a> component. If it is not included,
+ a default Manager configuration will be created automatically, which
+ is sufficient for most requirements, — see
+ <em>Standard Manager 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>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 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 class="attributeName">distributable</code></td><td align="left" valign="center">
+ <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
+ session attributes must implement <code>java.io.Serializable</code>).
+ Set to <code>false</code> (the default) to not enforce these
+ restrictions.</p>
+
+ <p><strong>NOTE</strong> - The value for this property is inherited
+ automatically based on the presence or absence of the
+ <code><distributable></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>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.</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 two standard implementations of <strong>Manager</strong>
+ for use — the default one stores active sessions, while the optional one
+ stores active sessions that have been swapped out (in addition to saving
+ sessions across a restart of Tomcat) in a storage location that is selected
+ via the use of an appropriate <strong>Store</strong> nested element.</p>
+
+ <h3>Standard Manager Implementation</h3>
+
+ <p>The standard implementation of <strong>Manager</strong> is
+ <strong>org.apache.catalina.session.StandardManager</strong>.
+ 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 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
+ disabled by setting this attribute to an empty string.</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></table>
+
+ <h3>Persistent Manager Implementation</h3>
+
+ <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
+ <code>PersistentManager</code> has the capability to swap active (but
+ idle) sessions out to a persistent storage mechanism, as well as to save
+ all sessions across a normal restart of Tomcat. The actual persistent
+ storage mechanism used is selected by your choice of a
+ <strong>Store</strong> element nested inside the <strong>Manager</strong>
+ 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>
+ 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"><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 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 class="attributeName">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 class="attributeName">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 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 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></table>
+
+ <p>In order to successfully use a PersistentManager, you must nest inside
+ it a <strong><Store></strong> element, as described below.</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="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>Standard Manager Implementation</h3>
+
+ <p>If you are using the <em>Standard Manager Implementation</em>
+ as described above, no elements may be nested inside your
+ <strong><Manager></strong> element.</p>
+
+ <h3>Persistent Manager Implementation</h3>
+
+ <p>If you are using the <em>Persistent Manager Implementation</em>
+ as described above, you <strong>MUST</strong> nest a
+ <strong><Store></strong> element inside, which defines the
+ characteristics of the persistent data storage. Two implementations
+ of the <code><Store></code> element are currently available,
+ with different characteristics, as described below.</p>
+
+ <h5>File Based Store</h5>
+
+ <p>The <em>File Based Store</em> implementation saves swapped out
+ sessions in individual files (named based on the session identifier)
+ in a configurable directory. Therefore, you are likely to encounter
+ scalability problems as the number of active sessions increases, and
+ this should primarily be considered a means to easily experiment.</p>
+
+ <p>To configure this, add a <code><Store></code> nested inside
+ your <code><Manager></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 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 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 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
+ assigned by the container is utilized.</p>
+ </td></tr></table>
+
+
+ <h5>JDBC Based Store</h5>
+
+ <p>The <em>JDBC Based Store</em> implementation saves swapped out
+ sessions in individual rows of a preconfigured table in a database
+ that is accessed via a JDBC driver. With large numbers of swapped out
+ sessions, this implementation will exhibit improved performance over
+ the File Based Store described above.</p>
+
+ <p>To configure this, add a <code><Store></code> nested inside
+ your <code><Manager></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 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 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 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"><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 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 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 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 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 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 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 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
+ must accept a single character.</p>
+ </td></tr></table>
+
+ <p>Before attempting to use the JDBC Based Store for the first time,
+ you must create the table that will be used to store swapped out sessions.
+ 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 (
+ session_id varchar(100) not null primary key,
+ valid_session char(1) not null,
+ max_inactive int not null,
+ last_access bigint not null,
+ 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>
+
+ <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
+ internal class loader. Generally, that means you must place the JAR
+ file containing this driver into the <code>$CATALINA_HOME/lib</code>
+ directory.</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>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Persistence Across Restarts"><!--()--></a><a name="Persistence_Across_Restarts"><strong>Persistence Across Restarts</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Whenever Apache Tomcat is shut down normally and restarted, or when an
+ application reload is triggered, the standard Manager implementation
+ will attempt to serialize all currently active sessions to a disk
+ file located via the <code>pathname</code> attribute. All such saved
+ sessions will then be deserialized and activated (assuming they have
+ not expired in the mean time) when the application reload is completed.</p>
+
+ <p>In order to successfully restore the state of session attributes,
+ all such attributes MUST implement the <code>java.io.Serializable</code>
+ interface. You MAY cause the Manager to enforce this restriction by
+ including the <code><distributable></code> element in your web
+ application deployment descriptor (<code>/WEB-INF/web.xml</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="Disable Session Persistence"><!--()--></a><a name="Disable_Session_Persistence"><strong>Disable Session Persistence</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>As documented above, every web application by default has
+ standard manager implementation configured, and it performs session
+ persistence across restarts. To disable this persistence feature, create
+ 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><Manager pathname="" /></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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/realm.html b/webapps/docs/config/realm.html
new file mode 100644
index 0000000..645aeaf
--- /dev/null
+++ b/webapps/docs/config/realm.html
@@ -0,0 +1,844 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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></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,
+ passwords, and <em>roles</em> (similar to Unix <em>groups</em>) assigned
+ to those users. Different implementations of Realm allow Catalina to be
+ integrated into environments where such authentication information is already
+ being created and maintained, and then utilize that information to implement
+ <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>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
+ <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
+ 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>
+
+</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>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 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>
+
+ <p>Unlike most Catalina components, there are several standard
+ <strong>Realm</strong> implementations available. As a result,
+ the <code>className</code> attribute MUST be used to select the
+ implementation you wish to 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="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 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,
+ changes to the database will be immediately reflected in the
+ information used to authenticate new logins.</p>
+
+ <p>A rich set of additional attributes lets you configure the required
+ 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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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>
+ <p>When this attribute has the value of <code>authOnly</code> or
+ <code>strictAuthOnly</code>, the <strong>roleNameCol</strong> and
+ <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 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 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 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 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 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 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 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"><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
+ <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 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 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 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 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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more
+ information on setting up container managed security using the
+ JDBC Database Realm component.</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="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 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,
+ changes to the database will be immediately reflected in the
+ information used to authenticate new logins.</p>
+
+ <p>The JDBC Realm uses a single db connection. This requires that
+ realm based authentication be synchronized, i.e. only one authentication
+ can be done at a time. This could be a bottleneck for applications
+ with high volumes of realm based authentications.</p>
+
+ <p>The DataSource Database Realm supports simultaneous realm based
+ authentications and allows the underlying JDBC DataSource to
+ handle optimizations like database connection pooling.</p>
+
+ <p>A rich set of additional attributes lets you configure the name
+ 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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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>
+ <p>When this attribute has the value of <code>authOnly</code> or
+ <code>strictAuthOnly</code>, the <strong>roleNameCol</strong> and
+ <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 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 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 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
+ global DataSource.</p>
+ </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"><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
+ <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 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 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 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 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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>See the <a href="../realm-howto.html#DataSourceRealm">
+ DataSource Realm HOW-TO</a> for more information on setting up container
+ managed security using the DataSource Database Realm component.</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="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 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
+ information used to authenticate new logins.</p>
+
+
+ <p>The directory realm supports a variety of approaches to using
+ LDAP for authentication:</p>
+
+ <ul>
+ <li>The realm can either use a pattern to determine the
+ distinguished name (DN) of the user's directory entry, or search
+ the directory to locate that entry.
+ </li>
+
+ <li>The realm can authenticate the user either by binding to the
+ directory with the DN of the user's entry and the password
+ presented by the user, or by retrieving the password from the
+ user's entry and performing a comparison locally.
+ </li>
+
+ <li>Roles may be represented in the directory as explicit entries
+ found by a directory search (e.g. group entries of which the user
+ is a member), as the values of an attribute in the user's entry,
+ or both.
+ </li>
+ </ul>
+
+ <p> A rich set of additional attributes lets you configure the
+ required behaviour as well as the connection to the underlying
+ 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 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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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">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 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 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 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 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 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 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 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 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 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 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 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).
+ Microsoft Active Directory often returns referrals.
+ 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 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.</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 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.</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 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">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">useDelegatedCredential</code></td><td align="left" valign="center">
+ <p>When the JNIRealm is used with the SPNEGO authenticator, delegated
+ credentials for the user may be available. If such credentials are
+ present, this attribute controls whether are 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 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
+ <code>connectionName</code> and
+ <code>connectionPassword</code> properties, and retrieve the
+ corresponding attribute for comparison to the value specified
+ by the user being authenticated. If you do
+ <strong>not</strong> specify this value, JNDIRealm will
+ attempt a simple bind to the directory using the DN of the
+ 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 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. 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
+ <code>roleName</code> property to specify the name of an
+ attribute to be retrieved from individual role entries found
+ 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 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
+ (along with the <code>userBase</code> and
+ <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 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 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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more
+ information on setting up container managed security using the
+ JNDI Directory Realm component.</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 Realm - org.apache.catalina.realm.UserDatabaseRealm"><!--()--></a><a name="UserDatabase_Realm_-_org.apache.catalina.realm.UserDatabaseRealm"><strong>UserDatabase Realm - org.apache.catalina.realm.UserDatabaseRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The <strong>UserDatabase Realm</strong> is a Realm implementation
+ that is based on a UserDatabase resource made available through the global
+ JNDI resources configured for this Tomcat instance.</p>
+
+ <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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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 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 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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>See the
+ <a href="../realm-howto.html">Container-Managed Security Guide</a> for more
+ information on setting up container managed security using the UserDatabase
+ Realm component and the
+ <a href="../jndi-resources-howto.html">JNDI resources how-to</a> for more
+ information on how to configure a UserDatabase resource.</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="Memory Based Realm - org.apache.catalina.realm.MemoryRealm"><!--()--></a><a name="Memory_Based_Realm_-_org.apache.catalina.realm.MemoryRealm"><strong>Memory Based Realm - org.apache.catalina.realm.MemoryRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The <strong>Memory Based Realm</strong> is a simple Realm implementation
+ that reads user information from an XML format, and represents it as a
+ collection of Java objects in memory. This implementation is intended
+ solely to get up and running with container managed security - it is NOT
+ intended for production use. As such, there are no mechanisms for
+ updating the in-memory collection of users when the content of the
+ underlying data file is changed.</p>
+
+ <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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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">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 class="attributeName">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
+ 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 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">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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>The XML document referenced by the <code>pathname</code> attribute must
+ conform to the following requirements:</p>
+ <ul>
+ <li>The root (outer) element must be <code><tomcat-users></code>.
+ </li>
+ <li>Each authorized user must be represented by a single XML element
+ <code><user></code>, nested inside the root element.</li>
+ <li>Each <code><user></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>password</strong> - Password of this user (in
+ clear text).</li>
+ <li><strong>roles</strong> - Comma-delimited list of the role names
+ assigned to this user.</li>
+ </ul></li>
+ </ul>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security Guide</a> for more
+ information on setting up container managed security using the
+ Memory Based Realm component.</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="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
+ <code>Realm</code> interface that authenticates users through the Java
+ Authentication & Authorization Service (JAAS) framework which is now
+ provided as part of the standard J2SE 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 J2EE authentication
+ framework for J2EE v1.4, based on the <a href="http://www.jcp.org/en/jsr/detail?id=196">JCP Specification Request
+ 196</a> to enhance container-managed security and promote 'pluggable'
+ authentication mechanisms whose implementations would be
+ container-independent.</p>
+
+ <p>Based on the JAAS login module and principal
+ (see <code>javax.security.auth.spi.LoginModule</code> and
+ <code>javax.security.Principal</code>), you can develop your own security
+ mechanism or wrap another third-party mechanism for integration with the CMA
+ as implemented by Tomcat.</p>
+
+ <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 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
+ used which means that the user must be assigned one of the roles defined
+ in web.xml. The alternative values are <code>authOnly</code> which means
+ that the user must be authenticated but no check is made for assigned
+ roles and <code>strictAuthOnly</code> which means that the user must be
+ 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 class="attributeName">appName</code></strong></td><td align="left" valign="center">
+ <p>The name of the application as configured in your login configuration
+ 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 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 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
+ willbe 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 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">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 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
+ <code>org.apache.catalina.realm.X509UsernameRetriever</code>
+ interface. The default is to use the certificate's SubjectDN
+ as the username.</p>
+ </td></tr></table>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security
+ Guide</a> for more information on setting up container managed security
+ using the JAAS Realm component.</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="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
+ <code>Realm</code> interface that authenticates users through one or more
+ sub-Realms.</p>
+
+ <p>Using CombinedRealm gives the developer the ability to combine multiple
+ Realms of the same or different types. This can be used to authenticate
+ against different sources, provide fall back in case one Realm fails or for
+ any other purpose that requires multiple Realms.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the CombinedRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <p>The CombinedRealm implementation does not support any additional
+ attributes.</p>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security
+ Guide</a> for more information on setting up container managed security
+ using the CombinedRealm component.</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="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
+ <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
+ deliberating making requests with invalid users (and hence causing this
+ cache to grow) the size of the list of users that have failed authentication
+ is limited.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the LockOutRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <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 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 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 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 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>
+ </td></tr></table>
+
+ <p>See the <a href="../realm-howto.html">Container-Managed Security
+ Guide</a> for more information on setting up container managed security
+ using the LockOutRealm component.</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="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>CombinedRealm Implementation</h3>
+
+ <p>If you are using the <em>CombinedRealm Implementation</em> or a Realm
+ that extends the CombinedRealm, e.g. the LockOutRealm,
+ <strong><Realm></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>
+
+ <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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/resources.html b/webapps/docs/config/resources.html
new file mode 100644
index 0000000..3148201
--- /dev/null
+++ b/webapps/docs/config/resources.html
@@ -0,0 +1,133 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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,
+ 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
+ repository.</p>
+
+ <p>A unified caching engine is provided for all accesses to the webapp
+ resources made by the servlet container and web applications which use the
+ container provided mechanisms to access such resources, such as classloader
+ 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
+ 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,
+ 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>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 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
+ <code>org.apache.naming.resources.BaseDirContext</code>, as well as
+ 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>
+
+ </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>Resources</strong> is
+ <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>
+
+ <p>No components may be nested inside a <strong>Resources</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>Resources</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/server.html b/webapps/docs/config/server.html
new file mode 100644
index 0000000..2c75a9c
--- /dev/null
+++ b/webapps/docs/config/server.html
@@ -0,0 +1,115 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+
+ <p>A <strong>Server</strong> element represents the entire Catalina
+ servlet container. Therefore, it must be the single outermost element
+ in the <code>conf/server.xml</code> configuration file. Its attributes
+ represent the characteristics of the servlet container as a whole.</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>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 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"><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. 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 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>
+
+ </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>Server</strong> is
+ <strong>org.apache.catalina.core.StandardServer</strong>.
+ 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></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>The following components may be nested inside a <strong>Server</strong>
+ element:</p>
+ <ul>
+ <li><a href="service.html"><strong>Service</strong></a> -
+ One or more service element.</li>
+ <li><a href="globalresources.html"><strong>GlobalNamingResources</strong></a> -
+ Configure the JNDI global resources for the server.</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="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>There are no special features associated with a <strong>Server</strong>.
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/service.html b/webapps/docs/config/service.html
new file mode 100644
index 0000000..0587964
--- /dev/null
+++ b/webapps/docs/config/service.html
@@ -0,0 +1,102 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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>
+
+ <p>A <strong>Service</strong> element represents the combination of one or
+ more <strong>Connector</strong> components that share a single
+ <a href="engine.html">Engine</a> component for processing incoming
+ requests. One or more <strong>Service</strong> elements may be nested
+ inside a <a href="server.html">Server</a> 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="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>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 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 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
+ associated with a particular <a href="server.html">Server</a>
+ must be unique.</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>Service</strong> is
+ <strong>org.apache.catalina.core.StandardService</strong>.
+ 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></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>The only components that may be nested inside a <strong>Service</strong>
+ element are one or more <strong>Connector</strong> elements,
+ followed by exactly one <a href="engine.html">Engine</a> 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>There are no special features associated with a <strong>Service</strong>.
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/systemprops.html b/webapps/docs/config/systemprops.html
new file mode 100644
index 0000000..4ae7306
--- /dev/null
+++ b/webapps/docs/config/systemprops.html
@@ -0,0 +1,492 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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="#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 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 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 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 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 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>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 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
+ place. This can have a negative impact on performance. Providing the
+ alternative base class calls _jspInit() from Servlet.init(), setting this
+ property to <code>true</code> will enable pooling with an alternative base
+ class. If the alternative base class does not call _jspInit() and this
+ property is <code>true</code>, NPEs will occur when attempting to use
+ 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 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> 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 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 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 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 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 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 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 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 class="propertyName">org.apache.jasper.Constants. JSP_FILE</code></td><td align="left" valign="center">
+ <p>The name of the request attribute for <code><jsp-file></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 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 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 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 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 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 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>
+ </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"><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 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 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 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></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 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:
+ <ul>
+ <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.STRICT_NAMING</code></li>
+ <li>The <code>resourceOnlyServlets</code> attribute of any
+ <a href="context.html">Context</a> element.</li>
+ <li>The <code>tldNamespaceAware</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>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>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 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 <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.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><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 true 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></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 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 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
+ <code>INFO_THEN_DEBUG</code> is used, the period for which errors are
+ logged at DEBUG rather than INFO is controlled by the system property
+ <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:
+ <ul>
+ <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
+ system in later versions.</p>
+ </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
+ has been logged at INFO. Once this period has elapsed, the next message
+ will be logged at INFO followed by a new suppression period where
+ messages are logged at DEBUG and so on. The value is measured
+ in seconds.</p>
+ <p>A value of <code>0</code> is equivalent to using <code>INFO_ALL</code>
+ for <code>org.apache.juli.logging.UserDataHelper.CONFIG</code>.</p>
+ <p>A negative value means an infinite suppression period.</p>
+ <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 filenames of JARs that Tomcat will not scan
+ for configuration information when using the
+ <a href="jar-scanner.html">JarScanner</a> functionality. 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="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 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 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 conflictions) 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 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 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 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 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 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 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 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 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 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></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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/config/valve.html b/webapps/docs/config/valve.html
new file mode 100644
index 0000000..b6a8b02
--- /dev/null
+++ b/webapps/docs/config/valve.html
@@ -0,0 +1,1207 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 Configuration Reference (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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="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>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><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_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><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="#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/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="#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><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="#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></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
+ inserted into the request processing pipeline for the associated
+ Catalina container (<a href="engine.html">Engine</a>,
+ <a href="host.html">Host</a>, or <a href="context.html">Context</a>).
+ 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
+ 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>
+
+</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>
+
+ <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
+ 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
+ <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
+ where the URL is invalid, Tomcat will look first in the <code>Engine</code>,
+ then the default <code>Host</code> for the <code>Engine</code> and finally
+ the ROOT (or default) <code>Context</code> for the default <code>Host</code>
+ for an <code>AccessLog</code> implementation. Tomcat will use the first
+ <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>
+
+ <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 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 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 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 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.</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 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
+ <code>junk</code>, then a particular request will only be logged
+ if <code>ServletRequest.getAttribute("junk") == 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">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 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
+ 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
+ text strings, combined with pattern identifiers prefixed by the "%"
+ character to cause replacement by the corresponding variable value from
+ the current request and response. The following pattern codes are
+ supported:</p>
+ <ul>
+ <li><b>%a</b> - Remote IP address</li>
+ <li><b>%A</b> - Local IP address</li>
+ <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>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>%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>
+ <li><b>%S</b> - User session ID</li>
+ <li><b>%t</b> - Date and time, in Common Log Format</li>
+ <li><b>%u</b> - Remote user that was authenticated (if any), else '-'</li>
+ <li><b>%U</b> - Requested URL path</li>
+ <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 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:
+ <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}t</code></b> xxx is an enhanced SimpleDateFormat pattern</li>
+ </ul>
+ </p>
+
+ <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>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 <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>
+
+ </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="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> is a variant of
+ the Access Log Valve. It is not a real extension of the standard
+ Access Log valve, instead it supports the so-called
+ <a href="http://www.w3.org/TR/WD-logfile.html">Extended Log File Format</a>
+ defined by the W3C. The main difference to the standard
+ <code>AccessLogValve</code> are the supported pattern 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="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><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. A Remote Address
+ Filter can be associated with any Catalina container
+ (<a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or
+ <a href="context.html">Context</a>), and must accept any request
+ presented to this container for processing before it will be passed on.</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 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>
+
+ <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 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 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>
+<pre>
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ allow="127\.\d+\.\d+\.\d+|::1|0:0:0:0:0:0:0:1"/>
+</pre>
+ </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. A Remote Host
+ Filter can be associated with any Catalina container
+ (<a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or
+ <a href="context.html">Context</a>), and must accept any request
+ presented to this container for processing before it will be passed on.</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/Attributes"><!--()--></a><a name="Remote_Host_Filter/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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 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 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="Single Sign On Valve"><!--()--></a><a name="Single_Sign_On_Valve"><strong>Single Sign On 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="Single Sign On Valve/Introduction"><!--()--></a><a name="Single_Sign_On_Valve/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The <em>Single Sign On Valve</em> is utilized when you wish to give users
+ the ability to sign on to any one of the web applications associated with
+ 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
+ feature on the <strong>Host</strong> element for more information.</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="Single Sign On Valve/Attributes"><!--()--></a><a name="Single_Sign_On_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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 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 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">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>
+
+ <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>
+
+ <p>The <strong>Basic Authenticator Valve</strong> is automatically added to
+ any <a href="context.html">Context</a> that is configured to use BASIC
+ 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="Basic Authenticator Valve/Attributes"><!--()--></a><a name="Basic_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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"><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"><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
+ 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">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></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>
+
+ <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>
+
+ <p>The <strong>Digest Authenticator Valve</strong> is automatically added to
+ any <a href="context.html">Context</a> that is configured to use DIGEST
+ 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="Digest Authenticator Valve/Attributes"><!--()--></a><a name="Digest_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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 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"><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"><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
+ 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">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 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 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 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 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">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>
+ </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="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>
+
+ <p>The <strong>Form Authenticator Valve</strong> is automatically added to
+ any <a href="context.html">Context</a> that is configured to use FORM
+ 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="Form Authenticator Valve/Attributes"><!--()--></a><a name="Form_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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"><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">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"><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
+ 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">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>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>
+
+ <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>
+
+ <p>The <strong>SSL Authenticator Valve</strong> is automatically added to
+ any <a href="context.html">Context</a> that is configured to use SSL
+ 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="SSL Authenticator Valve/Attributes"><!--()--></a><a name="SSL_Authenticator_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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"><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 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">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></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="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="SPNEGO Valve/Attributes"><!--()--></a><a name="SPNEGO_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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"><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.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 availble 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>
+
+ <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>
+ </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>
+
+ <p>The <strong>Remote IP 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.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.
+ 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="#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 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="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>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 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.CrawlerSessionManagerValve</strong>.
+ </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>
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stuck Thread Detection Valve"><!--()--></a><a name="Stuck_Thread_Detection_Valve"><strong>Stuck Thread Detection 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="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>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
+ (<code>java.lang:type=Threading</code>) to retrieve other information
+ about each stuck thread.</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="Stuck Thread Detection Valve/Attributes"><!--()--></a><a name="Stuck_Thread_Detection_Valve/Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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 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 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>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/connectors.html b/webapps/docs/connectors.html
new file mode 100644
index 0000000..649f618
--- /dev/null
+++ b/webapps/docs/connectors.html
@@ -0,0 +1,87 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>Choosing a connector to use with Tomcat can be difficult. This page will
+list the connectors which are supported with this Tomcat release, and will
+hopefully help you make the right choice according to your needs.</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="HTTP"><strong>HTTP</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The HTTP connector is setup by default with Tomcat, and is ready to use. This
+connector features the lowest latency and best overall performance.</p>
+
+<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
+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
+front of the Tomcat instance is most of the time significantly worse than a
+standalone Tomcat with its default HTTP connector, even if a large part of the web
+application is made of static files. If integration with the native webserver is
+needed for any reason, an AJP connector will provide faster performance than
+proxied HTTP. AJP clustering is the most efficient from the Tomcat perspective.
+It is otherwise functionally equivalent to HTTP clustering.</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/default-servlet.html b/webapps/docs/default-servlet.html
new file mode 100644
index 0000000..e6465a5
--- /dev/null
+++ b/webapps/docs/default-servlet.html
@@ -0,0 +1,322 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+The default servlet is the servlet which serves static resources as well
+as serves the directory listings (if directory listings are enabled).
+
+</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>
+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>
+ <servlet>
+ <servlet-name>default</servlet-name>
+ <servlet-class>
+ org.apache.catalina.servlets.DefaultServlet
+ </servlet-class>
+ <init-param>
+ <param-name>debug</param-name>
+ <param-value>0</param-value>
+ </init-param>
+ <init-param>
+ <param-name>listings</param-name>
+ <param-value>false</param-value>
+ </init-param>
+ <load-on-startup>1</load-on-startup>
+ </servlet>
+
+...
+
+ <servlet-mapping>
+ <servlet-name>default</servlet-name>
+ <url-pattern>/</url-pattern>
+ </servlet-mapping>
+
+</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 by default, the default servlet is loaded at webapp startup and
+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:
+
+<table border="1">
+ <tr>
+ <th valign="top">debug</th>
+ <td valign="top">
+ Debugging level. It is not very useful unless you are a tomcat
+ developer. As
+ of this writing, useful values are 0, 1, 11, 1000. [0]
+ </td>
+ </tr>
+ <tr>
+ <th valign="top">listings</th>
+ <td valign="top">
+ If no welcome file is present, can a directory listing be
+ shown?
+ 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">
+ 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.
+ </td>
+ </tr>
+ <tr>
+ <th valign="top">globalXsltFile</th>
+ <td valign="top">
+ If you wish to customize your directory listing, you
+ can use an XSL transformation. This value is an absolute
+ file name which be used for all directory listings.
+ This can be overridden per context and/or 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">
+ You may also customize your directory listing by context by
+ configuring <code>contextXsltFile</code>. This should be a context
+ relative path (e.g.: <code>/path/to/context.xslt</code>). This
+ overrides <code>globalXsltFile</code>. If this value is present but a
+ file does 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">
+ You may also customize your directory listing by directory by
+ configuring <code>localXsltFile</code>. This should be a relative
+ file name in the directory where the listing will take place.
+ This overrides <code>globalXsltFile</code> and
+ <code>contextXsltFile</code>. If this value is present but a file
+ does not exist, then <code>contextXsltFile</code> will be used. If
+ <code>contextXsltFile</code> does 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">input</th>
+ <td valign="top">
+ Input buffer size (in bytes) when reading
+ resources to be served. [2048]
+ </td>
+ </tr>
+ <tr>
+ <th valign="top">output</th>
+ <td valign="top">
+ Output buffer size (in bytes) when writing
+ resources to be served. [2048]
+ </td>
+ </tr>
+ <tr>
+ <th valign="top">readonly</th>
+ <td valign="top">
+ 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">
+ 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
+ to always disable sendfile. [48]
+ </td>
+ </tr>
+ <tr>
+ <th valign="top">useAcceptRanges</th>
+ <td valign="top">
+ If true, the Accept-Ranges header will be set when appropriate for the
+ response. [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
+can understand what was just said, we will assume you can read the code
+to DefaultServlet servlet and make the appropriate adjustments. (If not,
+then that method isn't for you)
+</p>
+<p>
+You can use either <code>localXsltFile</code> or
+<code>globalXsltFile</code> and DefaultServlet will create
+an xml document and run it through an xsl transformation based
+on the values provided in <code>localXsltFile</code> and
+<code>globalXsltFile</code>. <code>localXsltFile</code> is first
+checked, followed by <code>globalXsltFile</code>, then default
+behaviors takes place.
+</p>
+
+<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>
+ <listing>
+ <entries>
+ <entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
+ fileName1
+ </entry>
+ <entry type='file|dir' urlPath='aPath' size='###' date='gmt date'>
+ fileName2
+ </entry>
+ ...
+ </entries>
+ <readme></readme>
+ </listing>
+</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>
+<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:
+<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 version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+
+ <xsl:output method="xhtml" encoding="iso-8859-1" indent="no"/>
+
+ <xsl:template match="listing">
+ <html>
+ <head>
+ <title>
+ Sample Directory Listing For
+ <xsl:value-of select="@directory"/>
+ </title>
+ <style>
+ 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;}
+ </style>
+ </head>
+ <body>
+ <h1>Sample Directory Listing For
+ <xsl:value-of select="@directory"/>
+ </h1>
+ <hr size="1" />
+ <table cellspacing="0"
+ width="100%"
+ cellpadding="5"
+ align="center">
+ <tr>
+ <th align="left">Filename</th>
+ <th align="center">Size</th>
+ <th align="right">Last Modified</th>
+ </tr>
+ <xsl:apply-templates select="entries"/>
+ </table>
+ <xsl:apply-templates select="readme"/>
+ <hr size="1" />
+ <h3>Apache Tomcat/7.0</h3>
+ </body>
+ </html>
+ </xsl:template>
+
+
+ <xsl:template match="entries">
+ <xsl:apply-templates select="entry"/>
+ </xsl:template>
+
+ <xsl:template match="readme">
+ <hr size="1" />
+ <pre><xsl:apply-templates/></pre>
+ </xsl:template>
+
+ <xsl:template match="entry">
+ <tr>
+ <td align="left">
+ <xsl:variable name="urlPath" select="@urlPath"/>
+ <a href="{$urlPath}">
+ <tt><xsl:apply-templates/></tt>
+ </a>
+ </td>
+ <td align="right">
+ <tt><xsl:value-of select="@size"/></tt>
+ </td>
+ <td align="right">
+ <tt><xsl:value-of select="@date"/></tt>
+ </td>
+ </tr>
+ </xsl:template>
+
+</xsl:stylesheet>
+</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><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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/deployer-howto.html b/webapps/docs/deployer-howto.html
new file mode 100644
index 0000000..f94c8e7
--- /dev/null
+++ b/webapps/docs/deployer-howto.html
@@ -0,0 +1,348 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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.
+ </p>
+ <p>
+ Web application deployment may be accomplished in a number of ways
+ within the Tomcat server.</p>
+ <ul>
+ <li>Statically; the web application is setup before Tomcat is started</li>
+ <li>
+ Dynamically; by directly manipulating already deployed web
+ applications (relying on <em>auto-deployment</em>
+ feature) or remotely by using the Tomcat Manager web
+ application
+ </li>
+ </ul>
+ <p>
+ The <a href="manager-howto.html">Tomcat Manager</a> is a web
+ application that can be used interactively (via HTML GUI) or
+ programmatically (via URL-based API) to deploy and manage web
+ applications.
+ </p>
+ <p>
+ 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/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
+ such as compiling and validating web applications as well as
+ packaging web application into web application resource (WAR)
+ files.
+ </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="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
+ <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
+ <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>
+ <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-7.0.x-deployer</i>.
+ </p>
+ <p>
+ TCD has prerequisites of Apache Ant 1.6.2+ and a Java installation.
+ Your environment should define an ANT_HOME environment value pointing to
+ the root of your Ant installation, and a JAVA_HOME value pointing to
+ your Java installation. Additionally, you should ensure Ant's ant
+ command, and the Java javac compiler command run from the command shell
+ that your operating system provides.
+ </p>
+ <ol>
+ <li>Download the TCD distribution</li>
+ <li>
+ 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">
+ 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
+ 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
+ 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
+ these Context Descriptors to perform their roles properly.
+ </p>
+ <p>
+ The locations for Context Descriptors are:
+ </p>
+ <ol>
+ <li>$CATALINA_BASE/conf/[enginename]/[hostname]/[webappname].xml</li>
+ <li>$CATALINA_BASE/webapps/[webappname]/META-INF/context.xml</li>
+ </ol>
+ <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.
+ </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
+ statically to Tomcat, followed by a Tomcat startup. The location you
+ 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.
+ </p>
+ <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
+ only if the Host's <code>deployOnStartup</code> attribute is "true".
+ </p>
+ <p>
+ The following deployment sequence will occur on Tomcat startup in that
+ case:
+ </p>
+ <ol>
+ <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
+ </li>
+ <li>.WAR files will be deployed</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="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
+ 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
+ enabled which is the default configuration.
+ </p>
+
+ <p>
+ <code>autoDeploy</code> set to "true" and a running Tomcat allows for:
+ </p>
+ <ul>
+ <li>Deployment of .WAR files copied into the Host <code>appBase</code>.</li>
+ <li>
+ Deployment of exploded web applications which are
+ copied into the Host <code>appBase</code>.
+ </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
+ so that .WARs are not exploded with a <code>unpackWARs</code>
+ attribute set to "false", in which case the web application
+ will be simply redeployed as a compressed archive.
+ </li>
+ <li>
+ 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.
+ </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
+ <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
+ possible to delete the resources of a running web application.
+ </li>
+ </ul>
+ <p>
+ Note that web application reloading can also be configured in the loader, in which
+ case loaded classes will be tracked for changes.
+ </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>.
+ </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
+ 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
+ build script to use. Only a modest understanding of Apache Ant is
+ required (installation as listed earlier in this page, and familiarity
+ 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
+ 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
+ <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
+ application. This can be used standalone, and does not need a running
+ Tomcat server. The compiled application will only run on the associated
+ <em>Tomcat 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
+ <code>/WEB-INF/classes</code> folder of the web application.</li>
+ <li>
+ <code>deploy</code>: Deploy a web application (compiled or not) to
+ a Tomcat server.
+ </li>
+ <li><code>undeploy</code>: Undeploy a web application</li>
+ <li><code>start</code>: Start web application</li>
+ <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
+ 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.
+ </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>.
+ </li>
+ <li>
+ <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,
+ by default <code>/myapp</code>.
+ </li>
+ <li>
+ <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/text</code>.
+ </li>
+ <li>
+ <code>username</code>: Tomcat Manager username (user should have a role of
+ manager-script)
+ </li>
+ <li><code>password</code>: Tomcat Manager password.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/developers.html b/webapps/docs/developers.html
new file mode 100644
index 0000000..94f9574
--- /dev/null
+++ b/webapps/docs/developers.html
@@ -0,0 +1,89 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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
+ <a href="http://wiki.apache.org/tomcat/SupportAndTraining">support and
+ training</a> page on the Tomcat Wiki).
+ </p>
+
+ <ul>
+ <li>Bill Barker (billbarker): Connectors</li>
+ <li>Costin Manolache (costin): Catalina, Connectors</li>
+ <li>Filip Hanik (fhanik): Clustering, Release Manager</li>
+ <li>Jean-Frederic Clere (jfclere): Connectors</li>
+ <li>Jim Jagielski (jim): Connectors</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>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>
+
+ <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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/elapi/index.html b/webapps/docs/elapi/index.html
new file mode 100644
index 0000000..19c5985
--- /dev/null
+++ b/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/webapps/docs/extras.html b/webapps/docs/extras.html
new file mode 100644
index 0000000..66f4931
--- /dev/null
+++ b/webapps/docs/extras.html
@@ -0,0 +1,127 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 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 download the extras components open the Tomcat download page 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</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 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>
+
+ <p>
+ Tomcat uses a package renamed commons-logging API implementation which is
+ hardcoded to use the java.util.logging API. The commons-logging additional
+ component builds a full fledged package renamed commons-logging
+ implementation which can be used to replace the implementation provided with
+ Tomcat. See the <a href="logging.html">logging</a> page for usage
+ instructions.
+ </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="Web Services support (JSR 109)"><!--()--></a><a name="Web_Services_support_(JSR_109)"><strong>Web Services support (JSR 109)</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ Tomcat provides factories for JSR 109 which may be used to resolve web
+ services references. Place the generated catalina-ws.jar as well as
+ jaxrpc.jar and wsdl4j.jar (or another implementation of JSR 109) in the
+ Tomcat lib folder.
+ </p>
+
+ <p>
+ Users should be aware that wsdl4j.jar is licensed under CPL 1.0 and not the
+ Apache License version 2.0.
+ </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 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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-apps.html b/webapps/docs/funcspecs/fs-admin-apps.html
new file mode 100644
index 0000000..dee8a00
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-apps.html
@@ -0,0 +1,299 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+
+ <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 this specification is to define high level requirements
+ for administrative applications that can be used to manage the operation
+ 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>
+ <li><em>As A Scriptable Web Application</em> - The existing
+ <code>Manager</code> web application provides a simple HTTP-based
+ interface for managing Tomcat through commands that are expressed
+ entirely through a request URI. This is useful in environments
+ where you wish to script administrative commands with tools that
+ can generate HTTP transactions.</li>
+ <li><em>As An HTML-Based Web Application</em> - Use an HTML presentation
+ to provide a GUI-like user interface for humans to interact with the
+ administrative capabilities.</li>
+ <li><em>As SOAP-Based Web Services</em> - The operational commands to
+ administer Tomcat are made available as web services that utilize
+ SOAP message formats.</li>
+ <li><em>As Java Management Extensions (JMX) Commands</em> - The operational
+ commands to administer Tomcat are made available through JMX APIs,
+ for integration into management consoles that utilize them.</li>
+ <li><em>Other Remote Access APIs</em> - Other remote access APIs, such
+ as JINI, RMI, and CORBA can also be utilized to access administrative
+ capabilities.</li>
+ </ul>
+
+ <p>Underlying all of the access methods described above, it is assumed
+ that the actual operations are performed either directly on the
+ corresponding Catalina components (such as calling the
+ <code>Deployer.deploy()</code> method to deploy a new web application),
+ or through a "business logic" layer that can be shared across all of the
+ access methods. This approach minimizes the cost of adding new
+ administrative capabilities later -- it is only necessary to add the
+ corresponding business logic function, and then write adapters to it for
+ all desired access methods.</p>
+
+ <p>The current status of this functional specification is
+ <strong>PROPOSED</strong>. It has not yet been discussed and
+ agreed to on the TOMCAT-DEV mailing list.</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>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">
+ 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>
+ </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="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>To the maximum extent feasible, all administrative functions,
+ and the access methods that support them, shall run portably
+ 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
+ (such as by adding a username/password with a specific role to
+ the Tomcat user's database.</li>
+ <li>Administrative functions shall be realized as direct calls to
+ corresponding Catalina APIs, or through a business logic layer
+ that is independent of the access method used to initiate it.</li>
+ <li>The common business logic components shall be implemented in
+ package <code>org.apache.catalina.admin</code>.</li>
+ <li>The common business logic components shall be built as part of the
+ standard Catalina build process, and made visible in the
+ Catalina class loader.</li>
+ <li>The Java components required for each access method shall be
+ implemented in subpackages of <code>org.apache.catalina.admin</code>.
+ </li>
+ <li>The build scripts should treat each access method as optional,
+ so that it will be built only if the corresponding required
+ APIs are present at build time.</li>
+ <li>It shall be possible to save the configured state of the running
+ Tomcat container such that this state can be reproduced when the
+ container is shut down and restarted.</li>
+ <li>Administrative commands to start up and shut down the overall
+ Tomcat container are <strong>out of scope</strong> for the
+ purposes of these applications. It is assumed that other
+ (usually platform-specific) mechanisms will be used for container
+ startup and shutdown.</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
+ administrative applications to operate correctly:</p>
+ <ul>
+ <li>For access methods that require creation of server sockets, the
+ appropriate ports must be configured and available.</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 administrative applications depends on the
+ following specific features of the surrounding container:</p>
+ <ul>
+ <li>To the maximum extent feasible, Catalina components that offer
+ direct administrative APIs and property setters shall support
+ "live" changes to their operation, without requiring a container
+ restart.</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="External Technologies"><!--()--></a><a name="External_Technologies"><strong>External Technologies</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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:<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.jcp.org/jsr/detail/154.jsp">Servlet 2.4</a>
+ (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 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>
+ <li><strong>TO BE DETERMINED</strong> - Application for hosting SOAP
+ based web services</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="Properties of Administered Objects"><!--()--></a><a name="Properties_of_Administered_Objects"><strong>Properties of Administered Objects</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Functional requirements for administrative applications are specified
+ in terms of <em>Administered Objects</em>, whose definitions and detailed
+ properties are listed <a href="fs-admin-objects.html">here</a>. In general,
+ Administered Objects correspond to components in the Catalina architecture,
+ but these objects are defined separately here for the following reasons:</p>
+ <ul>
+ <li>It is possible that the administrative applications do not expose
+ every possible configurable facet of the underlying components.</li>
+ <li>In some cases, an Administered Object (from the perspective of an
+ administrative operation) is realized by more than one Catalina
+ component, at a finer-grained level of detail.</li>
+ <li>It is necessary to represent the configuration information for a
+ component separately from the component itself (for instance, in
+ order to store that configuration information for later use).</li>
+ <li>It is necessary to represent configuration information (such as
+ a Default Context) when there is no corresponding component instance.
+ </li>
+ <li>Administered Objects, when realized as Java classes, will include
+ methods for administrative operations that have no correspondence
+ to operations performed by the corresponding actual components.</li>
+ </ul>
+
+ <p>It is assumed that the reader is familiar with the overall component
+ architecture of Catalina. For further information, see the corresponding
+ Developer Documentation. To distinguish names that are used as both
+ <em>Administered Objects</em> and <code>Components</code>, different
+ font presentations are utilized. Default values for many properties
+ are listed in [square brackets].</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="Supported Administrative Operations"><!--()--></a><a name="Supported_Administrative_Operations"><strong>Supported Administrative Operations</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The administrative operations that are available are described in terms
+ of the corresponding Administered Objects (as defined above), in a manner
+ that is independent of the access method by which these operations are
+ requested. In general, such operations are relevant only in the context
+ of a particular Administered Object (and will most likely be realized as
+ method calls on the corresponding Administered Object classes), so they
+ are organized based on the currently "focused" administered object.
+ The available Supported Operations are documented
+ <a href="fs-admin-opers.html">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="Access Method Specific Requirements"><!--()--></a><a name="Access_Method_Specific_Requirements"><strong>Access Method Specific Requirements</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h5>Scriptable Web Application</h5>
+
+ <p>An appropriate subset of the administrative operations described above
+ shall be implemented as commands that can be performed by the "Manager"
+ web application. <strong>FIXME</strong> - Enumerate them.</p>
+
+ <p>In addition, this web application shall conform to the following
+ requirements:</p>
+ <ul>
+ <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 a security role.</li>
+ </ul>
+
+ <h5>HTML-Based Web Application</h5>
+
+ <p>The entire suite of administrative operations described above shall be
+ made available through a web application designed for human interaction.
+ In addition, this web application shall conform to the following
+ requirements:</p>
+ <ul>
+ <li>Must be implemented using servlet, JSP, and MVC framework technologies
+ described under "External Technologies", above.</li>
+ <li>Prompts and error messages must be internationalizable to multiple
+ languages.</li>
+ <li>Rendered HTML must be compatible with Netscape Navigator (version 4.7
+ or later) and Internet Explorer (version 5.0 or later).</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="Testable Assertions"><!--()--></a><a name="Testable_Assertions"><strong>Testable Assertions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p><strong>FIXME</strong> - Complete this section.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-objects.html b/webapps/docs/funcspecs/fs-admin-objects.html
new file mode 100644
index 0000000..5e4de05
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-objects.html
@@ -0,0 +1,464 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+<p>This document defines the <em>Administered Objects</em> that represent
+the internal architectural components of the Catalina servlet container.
+Associated with each is a set of <a href="fs-admin-opers.html">Supported
+Operations</a> that can be performed when the administrative application is
+"focused" on a particular configurable object.</p>
+
+<p>The following Administered Objects are defined:</p>
+<ul>
+<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="Access Logger"><!--()--></a><a name="Access_Logger"><strong>Access Logger</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>An <em>Access Logger</em> is an optional <code>Valve</code> that can
+ create request access logs in the same formats as those provided by
+ web servers. Such access logs are useful input to hit count and user
+ access tracking analysis programs. An Access Logger can be attached to
+ an <em>Engine</em>, a <em>Host</em>, a <em>Context</em>, or a <em>Default
+ Context</em>.</p>
+
+ <p>The standard component implementing an <em>Access Logger</em> is
+ <code>org.apache.catalina.valves.AccessLogValve</code>. It supports the
+ following configurable properties:</p>
+ <ul>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>directory</code> - Absolute or relative (to $CATALINA_BASE) path
+ of the directory into which access log files are created.
+ [logs].</li>
+ <li><code>pattern</code> - Pattern string defining the fields to be
+ included in the access log output, or "common" for the standard
+ access log pattern. See
+ <code>org.apache.catalina.valves.AccessLogValve</code> for more
+ information. [common]</li>
+ <li><code>prefix</code> - Prefix added to the beginning of each log file
+ name created by this access logger.</li>
+ <li><code>resolveHosts</code> - Should IP addresses be resolved to host
+ names in the log? [false]</li>
+ <li><code>suffix</code> - Suffix added to the end of each log file name
+ created by this access logger.</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="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Connector</em> is the representation of a communications endpoint
+ by which requests are received from (and responses returned to) a Tomcat
+ client. The administrative applications shall support those connectors
+ that are commonly utilized in Tomcat installations, as described in detail
+ below.</p>
+
+ <p>For standalone use, the standard connector supporting the HTTP/1.1
+ protocol is <code>org.apache.catalina.connectors.http.HttpConnector</code>.
+ It supports the following configurable properties:</p>
+ <ul>
+ <li><code>acceptCount</code> - The maximum queue length of incoming
+ connections that have not yet been accepted. [10]</li>
+ <li><code>address</code> - For servers with more than one IP address, the
+ address upon which this connector should listen. [All Addresses]</li>
+ <li><code>bufferSize</code> - Default input buffer size (in bytes) for
+ requests created by this Connector. [2048]</li>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>enableLookups</code> - Should we perform DNS lookups on remote
+ IP addresses when <code>request.getRemoteHost()</code> is called?
+ [false]</li>
+ <li><code>maxProcessors</code> - The maximum number of processor threads
+ supported by this connector. [20]</li>
+ <li><code>minProcessors</code> - The minimum number of processor threads
+ to be created at container startup. [5]</li>
+ <li><code>port</code> - TCP/IP port number on which this Connector should
+ listen for incoming requests. [8080]</li>
+ <li><code>proxyName</code> - Host name to be returned when an application
+ calls <code>request.getServerName()</code>. [Value of Host: header]</li>
+ <li><code>proxyPort</code> - Port number to be returned when an application
+ calls <code>request.getServerPort()</code>. [Same as <code>port</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="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Context</em> is the representation of an individual web application,
+ which is associated with a corresponding <em>Host</em>. Note that the
+ administrable properties of a <em>Context</em> do <strong>not</strong>
+ include any settings from inside the web application deployment descriptor
+ for that application.</p>
+
+ <p>The standard component implementing a <em>Context</em> is
+ <code>org.apache.catalina.core.StandardContext</code>. It supports the
+ following configurable properties:</p>
+ <ul>
+ <li><code>cookies</code> - Should be use cookies for session identifier
+ communication? [true]</li>
+ <li><code>crossContext</code> - Should calls to
+ <code>ServletContext.getServletContext()</code> return the actual
+ context responsible for the specified path? [false]</li>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>docBase</code> - The absolute or relative (to the
+ <code>appBase</code> of our owning <em>Host</em>) pathname of a
+ directory containing an unpacked web application, or of a web
+ application archive (WAR) file.</li>
+ <li><code>override</code> - Should settings in this <em>Context</em>
+ override corresponding settings in the <em>Default Context</em>?
+ [false]</li>
+ <li><code>path</code> - Context path for this web application, or an empty
+ string for the root application of a <em>Host</em>. [Inferred from
+ directory or WAR file name]</li>
+ <li><code>reloadable</code> - Should Tomcat monitor classes in the
+ <code>/WEB-INF/classes</code> directory for changes, and reload the
+ application if they occur? [false]</li>
+ <li><code>useNaming</code> - Should Tomcat provide a JNDI naming context,
+ containing preconfigured entries and resources, corresponding to the
+ requirements of the Java2 Enterprise Edition specification? [true]</li>
+ <li><code>workDir</code> - Absolute pathname of a scratch directory that is
+ provided to this web application. [Automatically assigned relative to
+ $CATALINA_BASE/work]</li>
+ </ul>
+
+ <p>Each <em>Context</em> is owned by a parent <em>Host</em>, and is
+ associated with:</p>
+ <ul>
+ <li>An optional <em>Access Logger</em> that logs all requests processed
+ by this web application.</li>
+ <li>Zero or more <em>Environment Entries</em> representing environment
+ entries for the JNDI naming context associated with a web
+ application.</li>
+ <li>Zero or more <em>JDBC Resources</em> representing database connection
+ pools associated with a web application.</li>
+ <li>A <em>Loader</em> representing the web application class loader used
+ by this web application.</li>
+ <li>A <em>Manager</em> representing the session manager used by this
+ web application.</li>
+ <li>An optional <em>Realm</em> used to provide authentication and access
+ control information for this web application.</li>
+ <li>Zero or more <em>Request Filters</em> used to limit access to this
+ web application based on remote host name or IP address.</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="Default Context"><!--()--></a><a name="Default_Context"><strong>Default Context</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Default Context</em> represents a subset of the configurable
+ properties of a <em>Context</em>, and is used to set defaults for those
+ properties when web applications are automatically deployed. A <em>Default
+ Context</em> object can be associated with an <em>Engine</em> or a
+ <em>Host</em>. The following configurable properties are supported:</p>
+ <ul>
+ <li><code>cookies</code> - Should be use cookies for session identifier
+ communication? [true]</li>
+ <li><code>crossContext</code> - Should calls to
+ <code>ServletContext.getServletContext()</code> return the actual
+ context responsible for the specified path? [false]</li>
+ <li><code>reloadable</code> - Should Tomcat monitor classes in the
+ <code>/WEB-INF/classes</code> directory for changes, and reload the
+ application if they occur? [false]</li>
+ <li><code>useNaming</code> - Should Tomcat provide a JNDI naming context,
+ containing preconfigured entries and resources, corresponding to the
+ requirements of the Java2 Enterprise Edition specification? [true]</li>
+ </ul>
+
+ <p>Each <em>Default Context</em> is owned by a parent <em>Engine</em> or
+ <em>Host</em>, and is associated with:</p>
+ <ul>
+ <li>Zero or more <em>Environment Entries</em> representing environment
+ entries for the JNDI naming context associated with a web
+ application.</li>
+ <li>Zero or more <em>JDBC Resources</em> representing database connection
+ pools associated with a web application.</li>
+ <li>An optional <em>Loader</em> representing default configuration
+ properties for the Loader component of deployed web applications.</li>
+ <li>An optional <em>Manager</em> representing default configuration
+ properties for the Manager component of deployed web applications.</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="Default Deployment Descriptor"><!--()--></a><a name="Default_Deployment_Descriptor"><strong>Default Deployment Descriptor</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Default web application characteristics are configured in a special
+ deployment descriptor named <code>$CATALINA_BASE/conf/web.xml</code>. This
+ section describes the configurable components that may be stored there.</p>
+
+ <p><strong>FIXME</strong> - Complete the description of default servlets,
+ default mappings, default MIME types, and so 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="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>An <em>Engine</em> is the representation of the entire Catalina
+ servlet container, and processes all requests for all of the associated
+ virtual hosts and web applications.</p>
+
+ <p>The standard component implementing an <em>Engine</em> is
+ <code>org.apache.catalina.core.StandardEngine</code>. It supports the
+ following configurable properties:</p>
+ <ul>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>defaultHost</code> - Name of the <em>Host</em> to which requests
+ will be directed if the requested host is unknown. [localhost]</li>
+ <li><code>name</code> - Logical name of this engine. [Tomcat Stand-Alone]
+ </li>
+ </ul>
+
+ <p>Each <em>Engine</em> is owned by a parent <em>Service</em>, and is
+ associated with:</p>
+ <ul>
+ <li>An optional <em>Access Logger</em> that logs all requests processed
+ by the entire container.</li>
+ <li>A <em>Default Context</em>, representing default properties of a
+ <em>Context</em> for automatically deployed applications for all
+ associated <em>Hosts</em> (unless overridden by a subordinate
+ component).</li>
+ <li>One or more <em>Hosts</em> representing individual virtual hosts
+ supported by this container.</li>
+ <li>A <em>Realm</em> used to provide authentication and access control
+ information for all virtual hosts and web applications (unless
+ overridden by a subordinate component).</li>
+ <li>Zero or more <em>Request Filters</em> used to limit access to the
+ entire container based on remote host name or IP address.</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="Environment Entry"><!--()--></a><a name="Environment_Entry"><strong>Environment Entry</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>An <em>Environment Entry</em> is the representation of a
+ <code><env-entry></code> element from a web application deployment
+ descriptor. It will cause the creation of a corresponding entry in the
+ JNDI naming context provided to the corresponding <em>Context</em>. The
+ following configurable properties are supported:</p>
+ <ul>
+ <li><code>description</code> - Description of this environment entry.</li>
+ <li><code>name</code> - Environment entry name (relative to the
+ <code>java:comp/env</code> context)</li>
+ <li><code>type</code> - Environment entry type (must be one of the fully
+ qualified Java classes listed in the servlet spec).</li>
+ <li><code>value</code> - Environment entry value (must be convertible from
+ String to the specified <code>type</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="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Host</em> is the representation of an individual virtual host,
+ which has a unique set of associated web applications.</p>
+
+ <p>The standard component implementing a <em>Host</em> is
+ <code>org.apache.catalina.core.StandardHost</code>. It supports the
+ following configurable properties:</p>
+ <ul>
+ <li><code>aliases</code> - Zero or more DNS names that are also associated
+ with this host (for example, a particular host might be named
+ <code>www.mycompany.com</code> with an alias <code>company.com</code>).
+ </li>
+ <li><code>appBase</code> - Absolute or relative (to $CATALINA_BASE) path
+ to a directory from which web applications will be automatically
+ deployed.</li>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>name</code> - DNS Name of the virtual host represented by this
+ object.</li>
+ <li><code>unpackWARs</code> - Should web application archive files
+ deployed by this virtual host be unpacked first? [true]</li>
+ </ul>
+
+ <p>Each <em>Host</em> is owned by a parent <em>Engine</em>, and is
+ associated with:</p>
+ <ul>
+ <li>An optional <em>Access Logger</em> that logs all requests processed
+ by this virtual host.</li>
+ <li>One or more <em>Contexts</em> representing the web applications
+ operating on this <em>Host</em>.</li>
+ <li>A <em>Default Context</em> representing default <em>Context</em>
+ properties for web applications that are automatically deployed
+ by this <em>Host</em>.</li>
+ <li>A optional <em>Realm</em> used to provide authentication and access
+ control information for all web applications associated with this
+ virtual host (unless overridden by a subordinate component).</li>
+ </ul>
+
+ <p><strong>FIXME</strong> - Should we support configuration of the
+ User Web Applications functionality?</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="JDBC Resource"><!--()--></a><a name="JDBC_Resource"><strong>JDBC Resource</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>JDBC Resources</em> represents a database connection pool (i.e.
+ an implementation of <code>javax.sql.DataSource</code> that will be
+ configured and made available in the JNDI naming context associated with
+ a web application.</p>
+
+ <p><strong>FIXME</strong> - properties of this administered object</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="Loader"><strong>Loader</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Loader</em> represents a web application class loader that will
+ be utilized to provide class loading services for a particular
+ <em>Context</em>.</p>
+
+ <p>The standard component implementing a <em>Loader</em> is
+ <code>org.apache.catalina.loader.StandardLoader</code>. It supports
+ the following configurable properties:</p>
+ <ul>
+ <li><code>checkInterval</code> - Number of seconds between checks for
+ modified classes, if automatic reloading is enabled. [15]</li>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>reloadable</code> - Should this class loader check for modified
+ classes and initiate automatic reloads? [Set automatically from the
+ <code>reloadable</code> property of the corresponding <em>Context</em>]
+ </li>
+ </ul>
+
+ <p>Each <em>Loader</em> is owned by a parent <em>Context</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="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Manager</em> represents a session manager that will be associated
+ with a particular web application. <strong>FIXME</strong> - Add support
+ for advanced session managers and their associated Stores.</p>
+
+ <p>The standard component implementing a <em>Manager</em> is
+ <code>org.apache.catalina.session.StandardManager</code>. It supports
+ the following configurable properties:</p>
+ <ul>
+ <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>
+
+ <p>Each <em>Manager</em> is owned by a parent <em>Context</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="Realm"><strong>Realm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A <em>Realm</em> represents a "database" of information about authorized
+ users, their passwords, and the security roles assigned to them. This will
+ be used by the container in the implementation of container-managed security
+ in accordance with the Servlet Specification. Several alternative
+ implementations are supported.</p>
+
+ <p><code>org.apache.catalina.realm.MemoryRealm</code> initializes its user
+ information from a simple XML file at startup time. If changes are made
+ to the information in this file, the corresponding web applications using
+ it must be restarted for the changes to take effect. It supports the
+ following configurable properties:</p>
+ <ul>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>pathname</code> - Absolute or relative (to $CATALINA_BASE) path to
+ the XML file containing our user information. [conf/tomcat-users.xml]
+ </li>
+ </ul>
+
+ <p><code>org.apache.catalina.realm.JDBCRealm</code> uses a relational
+ database (accessed via JDBC APIs) to contain the user information. Changes
+ in the contents of this database take effect immediately; however, the roles
+ assigned to a particular user are calculated only when the user initially
+ logs on (and not per request). The following configurable properties
+ are supported:</p>
+ <ul>
+ <li><code>connectionName</code> - Database username to use when establishing
+ a JDBC connection.</li>
+ <li><code>connectionPassword</code> - Database password to use when
+ establishing a JDBC connection.</li>
+ <li><code>connectionURL</code> - Connection URL to use when establishing
+ a JDBC connection.</li>
+ <li><code>debug</code> - Debugging detail level. [0]</li>
+ <li><code>digest</code> - Name of the <code>MessageDigest</code> algorithm
+ used to encode passwords in the database, or a zero-length string for
+ no encoding. [Zero-length String]</li>
+ <li><code>driverName</code> - Fully qualified Java class name of the JDBC
+ driver to be utilized.</li>
+ <li><code>roleNameCol</code> - Name of the column, in the User Roles table,
+ which contains the role name.</li>
+ <li><code>userCredCol</code> - Name of the column, in the Users table,
+ which contains the password (encrypted or unencrypted).</li>
+ <li><code>userNameCol</code> - Name of the column, in both the Users and
+ User Roles tables, that contains the username.</li>
+ <li><code>userRoleTable</code> - Name of the User Roles table, which contains
+ one row per security role assigned to a particular user. This table must
+ contain the columns specified by the <code>userNameCol</code> and
+ <code>roleNameCol</code> properties.</li>
+ <li><code>userTable</code> - Name of the Users table, which contains one row
+ per authorized user. This table must contain the columns specified by
+ the <code>userNameCol</code> and <code>userCredCol</code> properties.
+ </li>
+ </ul>
+
+ <p><strong>FIXME</strong> - Should we provide mechanisms to edit the contents
+ of a "tomcat-users.xml" file through the admin applications?</p>
+
+ <p>Each <em>Realm</em> is owned by a parent <em>Engine</em>, <em>Host</em>,
+ or <em>Context</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="Request Filter"><!--()--></a><a name="Request_Filter"><strong>Request Filter</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p><strong>FIXME</strong> - complete this entry</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"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p><strong>FIXME</strong> - complete this entry</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="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p><strong>FIXME</strong> - complete this entry</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-admin-opers.html b/webapps/docs/funcspecs/fs-admin-opers.html
new file mode 100644
index 0000000..b75ccd0
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-admin-opers.html
@@ -0,0 +1,309 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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 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>
+
+<p>Supported Operations are described for the following Administered
+Objects:</p>
+<ul>
+<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="Access Logger"><!--()--></a><a name="Access_Logger"><strong>Access Logger</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Access Logger</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or
+ <em>Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Connector"><strong>Connector</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Connector</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Service</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Context"><strong>Context</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Context</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Host</em>.</li>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Access Logger</em> associated
+ with this object.</li>
+ <li>Edit the configurable properties of the associated <em>Access
+ Logger</em>.</li>
+ <li>Remove the associated <em>Access Logger</em>.</li>
+ <li>Create and configure a new <em>Environment Entry</em> associated
+ with this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>Environment Entry</em>.</li>
+ <li>Remove an associated <em>Environment Entry</em>.</li>
+ <li>Create and configure a new <em>JDBC Resource</em> associated
+ with this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>JDBC Resource</em>.</li>
+ <li>Remove an associated <em>JDBC Resource</em>.</li>
+ <li>Create and configure a new <em>Loader</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Loader</em>.</li>
+ <li>Remove the associated <em>Loader</em>.</li>
+ <li>Create and configure a new <em>Manager</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Manager</em>.</li>
+ <li>Remove the associated <em>Manager</em>.</li>
+ <li>Create and configure a new <em>Realm</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Realm</em>.</li>
+ <li>Remove the associated <em>Realm</em>.</li>
+ <li>Create and configure a new <em>Request Filter</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an
+ associated <em>Request Filter</em></li>
+ <li>Remove an associated <em>Request Filter</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="Default Context"><!--()--></a><a name="Default_Context"><strong>Default Context</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Default Context</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Engine</em> or <em>Host</em>.</li>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Environment Entry</em> associated
+ with this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>Environment Entry</em>.</li>
+ <li>Remove an associated <em>Environment Entry</em>.</li>
+ <li>Create and configure a new <em>JDBC Resource</em> associated
+ with this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>JDBC Resource</em>.</li>
+ <li>Remove an associated <em>JDBC Resource</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="Engine"><strong>Engine</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Engine</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Service</em>.</li>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Access Logger</em> associated
+ with this object.</li>
+ <li>Edit the configurable properties of the associated <em>Access
+ Logger</em>.</li>
+ <li>Remove the associated <em>Access Logger</em>.</li>
+ <li>Create and configure a new <em>Default Context</em> associated
+ with this object.</li>
+ <li>Edit the configurable properties of the associated <em>Default
+ Context</em>.</li>
+ <li>Remove the associated <em>Default Context</em>.</li>
+ <li>Create and configure a new <em>Host</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an
+ associated <em>Host</em>.</li>
+ <li>Remove an associated <em>Host</em>.</li>
+ <li>Create and configure a new <em>Realm</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Realm</em>.</li>
+ <li>Remove the associated <em>Realm</em>.</li>
+ <li>Create and configure a new <em>Request Filter</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an
+ associated <em>Request Filter</em></li>
+ <li>Remove an associated <em>Request Filter</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="Environment Entry"><!--()--></a><a name="Environment_Entry"><strong>Environment Entry</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Environment Entry</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Context</em> or <em>Default Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Host"><strong>Host</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Host</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Engine</em>.</li>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Access Logger</em> associated
+ with this object.</li>
+ <li>Edit the configurable properties of the associated <em>Access
+ Logger</em>.</li>
+ <li>Remove the associated <em>Access Logger</em>.</li>
+ <li>Create and configure a new <em>Context</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>Context</em>.</li>
+ <li>Remove an associated <em>Context</em>.</li>
+ <li>Create and configure a new <em>Default Context</em> associated
+ with this object.</li>
+ <li>Edit the configurable properties of the associated <em>Default
+ Context</em>.</li>
+ <li>Remove the associated <em>Default Context</em>.</li>
+ <li>Create and configure a new <em>Realm</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Realm</em>.</li>
+ <li>Remove the associated <em>Realm</em>.</li>
+ <li>Create and configure a new <em>Request Filter</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an
+ associated <em>Request Filter</em></li>
+ <li>Remove an associated <em>Request Filter</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="JDBC Resource"><!--()--></a><a name="JDBC_Resource"><strong>JDBC Resource</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>JDBC Resource</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Context</em> or <em>Default Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Loader"><strong>Loader</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Loader</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Manager</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Realm"><strong>Realm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Realm</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or
+ <em>Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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="Request Filter"><!--()--></a><a name="Request_Filter"><strong>Request Filter</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Request Filter</em>, it shall
+ be possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Engine</em>, <em>Host</em>, or
+ <em>Context</em>.</li>
+ <li>Edit the configurable properties of this object.</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"><strong>Server</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of the overall <em>Server</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Service</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>Service</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="Service"><strong>Service</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>From the perspective of a particular <em>Service</em>, it shall be
+ possible to perform the following administrative operations:</p>
+ <ul>
+ <li>Navigate to the owning <em>Server</em>.</li>
+ <li>Edit the configurable properties of this object.</li>
+ <li>Create and configure a new <em>Connector</em> associated with
+ this object.</li>
+ <li>Select and edit the configurable properties of an associated
+ <em>Connector</em>.</li>
+ <li>Remove an associated <em>Connector</em>.</li>
+ <li>Create and configure a new <em>Engine</em> associated with
+ this object.</li>
+ <li>Edit the configurable properties of the associated <em>Engine</em>.</li>
+ <li>Remove the associated <em>Engine</em>.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-default.html b/webapps/docs/funcspecs/fs-default.html
new file mode 100644
index 0000000..b37b391
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-default.html
@@ -0,0 +1,270 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+
+ <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>Default Servlet</strong> is to serve
+ static resources of a web application in response to client requests.
+ As the name implies, it is generally configured as the "default"
+ servlet for a web application, by being mapped to a URL pattern "/".</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>The following external specifications have provisions which
+ partially define the correct behavior of the default servlet:</p>
+ <ul>
+ <li><a href="http://java.sun.com/products/servlet/download.html">
+ Servlet Specification</a> (Version 2.3 PFD2)</li>
+ <li><a href="http://www.rfc-editor.org/rfc/rfc2046.txt">Multipurpose
+ Internet Mail Extensions (MIME) Part Two: Media Types</a></li>
+ <li><a href="http://www.rfc-editor.org/rfc/rfc2616.txt">Hypertext
+ Transfer Protocol -- HTTP/1.1</a></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="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>Must be implemented as a servlet.</li>
+ <li>Must support configurable parameters for debugging detail level,
+ input buffer size, output buffer size, whether or not to produce
+ directory listings when no welcome file is present, and whether or not
+ modifications are supported via DELETE and PUT.</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 default servlet to operate correctly:</p>
+ <ul>
+ <li>The default 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 "default servlet"
+ servlet mapping, signified by URL pattern "/".</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 default servlet depends on the following
+ specific features of the surrounding container:</p>
+ <ul>
+ <li>The container shall provide a servlet context attribute that
+ lists the welcome file names that have been defined for this
+ web application.</li>
+ <li>The container shall provide a servlet context attribute that
+ contains a <code>javax.naming.directory.DirContext</code>
+ implementation representing the static resources of this
+ web application.</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 default servlet is called:</p>
+ <ul>
+ <li>Process and sanity check configuration parameters.</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>For all HTTP request methods, the resource path is determined from
+ the path information provided to this request, either as request attribute
+ <code>javax.servlet.include.path_info</code> (for a request dispatcher
+ access to a static resource) or by calling
+ <code>request.getPathInfo()</code> directly.</p>
+
+ <p>On each HTTP DELETE request processed by this servlet, the following
+ processing shall be performed:</p>
+ <ul>
+ <li>If modifications to the static resources are not allowed (set by a
+ configuration parameter), return HTTP status 403 (forbidden).</li>
+ <li>If an attempt is made to delete a resource from <code>/META-INF</code>
+ or <code>/WEB-INF</code>, return HTTP status 403 (forbidden).</li>
+ <li>If the requested resource does not exist, return HTTP status 404
+ (not found)</li>
+ <li>Unbind the resource from the directory context containing the
+ static resources for this web application. If successful, return
+ HTTP status 204 (no content). Otherwise, return HTTP status 405
+ (method not allowed).</li>
+ </ul>
+
+
+ <p>On each HTTP GET request processed by this servlet, the following
+ processing shall be performed:</p>
+ <ul>
+ <li>If the request is for a resource under <code>/META-INF</code> or
+ <code>/WEB-INF</code>, return HTTP status 404 (not found).</li>
+ <li>If the requested resource does not exist, return HTTP status 404
+ (not found).</li>
+ <li>If the requested resource is not a directory, but the resource
+ path ends in "/" or "\", return HTTP status 404 (not found).</li>
+ <li>If the requested resource is a directory:
+ <ul>
+ <li>If the request path does not end with "/", redirect to a
+ corresponding path with "/" appended so that relative references
+ in welcome files are resolved correctly.</li>
+ <li>If one of the specified welcome files exists, redirect to the
+ path for that welcome file so that it will be served explicitly.
+ </li>
+ </ul></li>
+ <li>If the request being processed contains an <code>If-Range</code>
+ header, perform the processing described in the HTTP/1.1 specification
+ to determine whether the client's information is up to date.</li>
+ <li>Determine the content type of the response, by looking up the
+ corresponding MIME type in our servlet context.</li>
+ <li>If the requested resource is a directory:
+ <ul>
+ <li>If directory listings are suppressed, return HTTP status 404
+ (not found).</li>
+ <li>Set the content type to <code>text/html</code>.</li>
+ </ul></li>
+ <li>Determine the range(s) to be returned, based on the existence of
+ any <code>If-Range</code> and <code>Range</code> headers.</li>
+ <li>If the requested resource is a directory, include an <code>ETag</code>
+ header in the response, with the value calculated based on the content
+ of the directory.</li>
+ <li>Include a <code>Last-Modified</code> header in the response documenting
+ the date/time that the resource was last modified.</li>
+ <li>Unless we are processing a HEAD request, include the appropriate
+ content (or content ranges) in the response.</li>
+ </ul>
+
+ <p>On each HTTP HEAD request processed by this servlet, the following
+ processing shall be performed:</p>
+ <ul>
+ <li>Processed identically to an HTTP GET request, except that the data
+ content is not transmitted after the headers.</li>
+ </ul>
+
+ <p>On each HTTP POST request processed by this servlet, the following
+ processing shall be performed:</p>
+ <ul>
+ <li>Processed identically to an HTTP GET request.</li>
+ </ul>
+
+
+ <p>On each HTTP PUT request processed by this servlet, the following
+ processing shall be performed:</p>
+ <ul>
+ <li>If modifications to the static resources are not allowed (set by a
+ configuration parameter), return HTTP status 403 (forbidden).</li>
+ <li>If an attempt is made to delete a resource from <code>/META-INF</code>
+ or <code>/WEB-INF</code>, return HTTP status 403 (forbidden).</li>
+ <li>Create a new resource from the body of this request.</li>
+ <li>Bind or rebind the specified path to the new resource (depending on
+ whether it currently exists or not). Return HTTP status as follows:
+ <ul>
+ <li>If binding was unsuccessful, return HTTP status 409 (conflict).
+ </li>
+ <li>If binding was successful and the resource did not previously
+ exist, return HTTP status 201 (created).</li>
+ <li>If binding was successful and the resource previously existed,
+ return HTTP status 204 (no content).</li>
+ </ul></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="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 default servlet:</p>
+ <ul>
+ <li>Requests for resources that do not exist in the web application must
+ return HTTP status 404 (not found).</li>
+ <li>The default servlet must operate identically for web applications that
+ are run out of a WAR file directly, or from an unpacked directory
+ structure.</li>
+ <li>If the web application is running out of an unpacked directory
+ structure, the default servlet must recognize cases where the resource
+ has been updated through external means.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-jdbc-realm.html b/webapps/docs/funcspecs/fs-jdbc-realm.html
new file mode 100644
index 0000000..5c31788
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-jdbc-realm.html
@@ -0,0 +1,266 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+
+ <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 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
+ <code>org.apache.catalina.Realm</code> interface.</p>
+
+ <p>This specification reflects a combination of functionality that is
+ already present in the <code>org.apache.catalina.realm.JDBCRealm</code>
+ class, as well as requirements for enhancements that have been
+ discussed. Where appropriate, requirements statements are marked
+ <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>
+
+ <p>The current status of this functional specification is
+ <strong>PROPOSED</strong>. It has not yet been discussed and
+ agreed to on the TOMCAT-DEV mailing list.</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>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>
+ </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="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>Be realized in one or more implementation classes.</li>
+ <li>Implement the <code>org.apache.catalina.Realm</code> interface.
+ [Current]</li>
+ <li>Implement the <code>org.apache.catalina.Lifecycle</code>
+ interface. [Current]</li>
+ <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>
+ base class.</li>
+ <li>Live in the <code>org.apache.catalina.realm</code> package.
+ [Current]</li>
+ <li>Support a configurable debugging detail level. [Current]</li>
+ <li>Log debugging and operational messages (suitably internationalized)
+ via the <code>getContainer().log()</code> method. [Current]</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
+ JDBCRealm to operate correctly:</p>
+ <ul>
+ <li>The desire to utilize JDBCRealm must be registered in
+ <code>$CATALINA_BASE/conf/server.xml</code>, in a
+ <code><Realm></code> element that is nested inside a
+ corresponding <code><Engine></code>, <code><Host></code>,
+ or <code><Context></code> element.</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 JDBCRealm depends on the following
+ specific features of the surrounding container:</p>
+ <ul>
+ <li>Interactions with <code>JDBCRealm</code> will be initiated by
+ the appropriate <code>Authenticator</code> implementation, based
+ on the login method that is selected.</li>
+ <li><code>JDBCRealm</code> must have the JDBC standard API classes
+ available to it. For a JDK 1.2 or later container, these APIs
+ are included in the standard platform.</li>
+ <li>When connection pooling is implemented, <code>JDBCRealm</code>
+ must have the JDBC Optional Package (version 2.0 or later) APIs
+ available to it. This library is available as a separate
+ download (and will be included in Tomcat binary distributions).</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="Overview of Operation"><!--()--></a><a name="Overview_of_Operation"><strong>Overview of Operation</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The main purpose of <code>JDBCRealm</code> is to allow Catalina to
+ authenticate users, and look up the corresponding security roles, from
+ the information found in a relational database accessed via JDBC APIs.
+ For maximum flexibility, the details of how this is done (for example,
+ the names of the required tables and columns) should be configurable.</p>
+
+ <p>Each time that Catalina needs to authenticate a user, it will call
+ the <code>authenticate()</code> method of this Realm implementation,
+ passing the username and password that were specified by the user. If
+ we find the user in the database (and match on the password), we accumulate
+ all of the security roles that are defined for this user, and create a
+ new <code>GenericPrincipal</code> object to be returned. If the user
+ is not authenticated, we return <code>null</code> instead. The
+ <code>GenericUser</code> object caches the set of security roles that
+ were owned by this user at the time of authentication, so that calls to
+ <code>isUserInRole()</code> can be answered without going back to the
+ database every 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="Detailed Functional Requirements"><!--()--></a><a name="Detailed_Functional_Requirements"><strong>Detailed Functional Requirements</strong></a></font></td></tr><tr><td><blockquote>
+
+
+ <h3>Configurable Properties</h3>
+
+ <p>The implementation shall support the following properties
+ that can be configured with JavaBeans property setters:</p>
+ <ul>
+ <li>Configuration parameters defining the JDBC driver to use, the
+ database connection URL to be accessed, and the username/password
+ to use for logging in. [Current]</li>
+ <li>Configuration parameters describing the connection pool to be
+ created to support simultaneous authentications. [Requested]</li>
+ <li>Name of the tables to be searched for users and roles. [Current]</li>
+ <li>Name of the columns to be used for usernames, passwords, and
+ role names. [Current]</li>
+ </ul>
+
+ <h3>Lifecycle Functionality</h3>
+
+ <p>The following processing must be performed when the <code>start()</code>
+ method is called:</p>
+ <ul>
+ <li>Establish a connection to the configured database, using the
+ configured username and password. [Current]</li>
+ <li>Configure and establish a connection pool of connections to the
+ database. [Requested]</li>
+ </ul>
+
+ <p>The following processing must be performed when the <code>stop()</code>
+ method is called:</p>
+ <ul>
+ <li>Close any opened connections to the database.</li>
+ </ul>
+
+
+ <h3>Method authenticate() Functionality</h3>
+
+ <p>When <code>authenticate()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>Acquire the one and only connection [Current] or acquire a connection
+ from the connection pool [Requested].</li>
+ <li>Select the one and only row from the user's table for this user,
+ and retrieve the corresponding password column. If zero rows (or
+ more than one row) are found, return <code>null</code>.</li>
+ <li>Authenticate the user by comparing the (possibly encrypted) password
+ value that was received against the password presented by the user.
+ If there is no match, return <code>null</code>.</li>
+ <li>Acquire a <code>List</code> of the security roles assigned to the
+ authenticated user by selecting from the roles table.</li>
+ <li>Construct a new instance of class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as
+ constructor arguments: this realm instance, the authenticated
+ username, and a <code>List</code> of the security roles associated
+ with this user.</li>
+ <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous
+ <code>GenericPrincipal</code> objects for a particular user, because
+ the information in the directory server might have changed since the
+ last time this user was authenticated.</li>
+ <li>Return the newly constructed <code>GenericPrincipal</code>.</li>
+ </ul>
+
+
+ <h3>Method hasRole() Functionality</h3>
+
+ <p>When <code>hasRole()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>The <code>principal</code> that is passed as an argument SHOULD
+ be one that we returned (instanceof class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, with a
+ <code>realm</code> property that is equal to our instance.</li>
+ <li>If the passed <code>principal</code> meets these criteria, check
+ the specified role against the list returned by
+ <code>getRoles()</code>, and return <code>true</code> if the
+ specified role is included; otherwise, return <code>false</code>.</li>
+ <li>If the passed <code>principal</code> does not meet these criteria,
+ return <code>false</code>.</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="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 <code>JDBCRealm</code>:</p>
+ <ul>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-jndi-realm.html b/webapps/docs/funcspecs/fs-jndi-realm.html
new file mode 100644
index 0000000..a41c61d
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-jndi-realm.html
@@ -0,0 +1,417 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+
+ <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 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
+ <code>org.apache.catalina.Realm</code> interface.</p>
+
+ <p>This specification reflects a combination of functionality that is
+ already present in the <code>org.apache.catalina.realm.JNDIRealm</code>
+ class, as well as requirements for enhancements that have been
+ discussed. Where appropriate, requirements statements are marked
+ <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>
+
+ <p>The current status of this functional specification is
+ <strong>PROPOSED</strong>. It has not yet been discussed and
+ agreed to on the TOMCAT-DEV mailing list.</p>
+
+ <p>The code in the current version of <code>JNDIRealm</code>, and the
+ ideas expressed in this functional specification, are the results of
+ contributions from many individuals, including (alphabetically):</p>
+ <ul>
+ <li>Holman, John <j.g.holman@qmw.ac.uk></li>
+ <li>Lockhart, Ellen <elockhart@home.com></li>
+ <li>McClanahan, Craig <craigmcc@apache.org></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="External Specifications"><!--()--></a><a name="External_Specifications"><strong>External Specifications</strong></a></font></td></tr><tr><td><blockquote>
+
+ <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>
+ </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="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>Be realized in one or more implementation classes.</li>
+ <li>Implement the <code>org.apache.catalina.Realm</code> interface.
+ [Current]</li>
+ <li>Implement the <code>org.apache.catalina.Lifecycle</code>
+ interface. [Current]</li>
+ <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>
+ base class.</li>
+ <li>Live in the <code>org.apache.catalina.realm</code> package.
+ [Current]</li>
+ <li>Support a configurable debugging detail level. [Current]</li>
+ <li>Log debugging and operational messages (suitably internationalized)
+ via the <code>getContainer().log()</code> method. [Current]</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
+ JNDIRealm to operate correctly:</p>
+ <ul>
+ <li>The desire to utilize JNDIRealm must be registered in
+ <code>$CATALINA_BASE/conf/server.xml</code>, in a
+ <code><Realm></code> element that is nested inside a
+ corresponding <code><Engine></code>, <code><Host></code>,
+ or <code><Context></code> element.</li>
+ <li>If the <em>Administrator Login</em> operational mode is selected,
+ the configured administrator username and password must be configured
+ in the corresponding directory server.</li>
+ <li>If the <em>Username Login</em> operational mode is selected,
+ the corresponding directory server must be configured to accept
+ logins with the username and password that will be passed to
+ <code>JNDIRealm</code> by the appropriate <code>Authenticator</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="Container Dependencies"><!--()--></a><a name="Container_Dependencies"><strong>Container Dependencies</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Correct operation of JNDIRealm depends on the following
+ specific features of the surrounding container:</p>
+ <ul>
+ <li>Interactions with <code>JNDIRealm</code> will be initiated by
+ the appropriate <code>Authenticator</code> implementation, based
+ on the login method that is selected.</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="Operational Modes"><!--()--></a><a name="Operational_Modes"><strong>Operational Modes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The completed <code>JNDIRealm</code> must support two major operational
+ modes in order to support all of the required use cases. For the purposes
+ of this document, the modes are called <em>administrator login</em> and
+ <em>Username Login</em>. They are described further in the following
+ paragraphs.</p>
+
+ <p>For <em>Administrator Login</em> mode, <code>JNDIRealm</code> will be
+ configured to establish one or more connections (using a connection pool)
+ to an appropriate directory server, using JNDI APIs, under a "system
+ administrator" username and password. This is similar to the approach
+ normally used to configure <code>JDBCRealm</code> to access authentication
+ and access control information in a database. It is assumed that the
+ system administrator username and password that are configured provide
+ sufficient privileges within the directory server to read (but not modify)
+ the username, password, and assigned roles for each valid user of the
+ web application associated with this <code>Realm</code>. The password
+ can be stored in cleartext, or in one of the digested modes supported by
+ the <code>org.apache.catalina.realm.RealmBase</code> base class.</p>
+
+ <p>For <em>Username Login</em> mode, <code>JNDIRealm</code> does not
+ normally remain connected to the directory server. Instead, whenever a
+ user is to be authenticated, a connection to the directory server
+ (using the username and password received from the authenticator) is
+ attempted. If this connection is successful, the user is assumed to be
+ successfully authenticated. This connection is then utilized to read
+ the corresponding security roles associated with this user, and the
+ connection is then broken.</p>
+
+ <p><strong>NOTE</strong> - <em>Username Login</em> mode cannot be used
+ if you have selected login method <code>DIGEST</code> in your web
+ application deployment descriptor (<code>web.xml</code>) file. This
+ restriction exists because the cleartext password is never available
+ to the container, so it is not possible to bind to the directory server
+ using the user's username and password.</p>
+
+ <p>Because these operational modes work so differently, the functionality
+ for each mode will be described separately. Whether or not both modes
+ are actually supported by a single class (versus a class per mode) is
+ an implementation detail left to the designer.</p>
+
+ <p><strong>NOTE</strong> - The current implementation only implements
+ part of the <em>Administrator Lookup</em> mode requirements. It does
+ not support the <em>Username Lookup</em> mode at all, at this point.</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="Administrator Login Mode Functionality"><!--()--></a><a name="Administrator_Login_Mode_Functionality"><strong>Administrator Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote>
+
+
+ <h3>Configurable Properties</h3>
+
+ <p>The implementation shall support the following properties
+ that can be configured with JavaBeans property setters:</p>
+ <ul>
+ <li><code>connectionURL</code> - URL of the directory server we will
+ be contacting.</li>
+ <li><code>contextFactory</code> - Fully qualified class name of the JNDI
+ context factory used to retrieve our InitialContext.
+ [com.sun.jndi.ldap.LdapCtxFactory]</li>
+ <li>Additional configuration properties required to establish the
+ appropriate connection. [Requested]</li>
+ <li>Connection pool configuration properties. [Requested]</li>
+ <li>Configuration properties defining how a particular user is
+ authenticated. The following capabilities should be supported:
+ <ul>
+ <li>Substitute the specified username into a string. [Requested]</li>
+ <li>Retrieve the distinguished name (DN) of an authorized user via an
+ LDAP search string with a replacement placeholder for the
+ username, and comparison of the password to a configurable
+ attribute retrieved from the search result. [Current]</li>
+ </ul></li>
+ <li>Configuration properties defining how the roles associated with a
+ particular authenticated user can be retrieved. The following
+ approaches should be supported:
+ <ul>
+ <li>Retrieve a specified attribute (possibly multi-valued)
+ from an LDAP search expression,
+ with a replacement placeholder for the DN of the user.
+ [Current]</li>
+ <li>Retrieve a set of role names that are defined implicitly (by
+ selecting principals that match a search pattern) rather than
+ explicitly (by finding a particular attribute value).
+ [Requested]</li>
+ </ul></li>
+ </ul>
+
+ <h3>Lifecycle Functionality</h3>
+
+ <p>The following processing must be performed when the <code>start()</code>
+ method is called:</p>
+ <ul>
+ <li>Establish a connection to the configured directory server, using the
+ configured system administrator username and password. [Current]</li>
+ <li>Configure and establish a connection pool of connections to the
+ directory server. [Requested]</li>
+ </ul>
+
+ <p>The following processing must be performed when the <code>stop()</code>
+ method is called:</p>
+ <ul>
+ <li>Close any opened connections to the directory server.</li>
+ </ul>
+
+
+ <h3>Method authenticate() Functionality</h3>
+
+ <p>When <code>authenticate()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>Acquire the one and only connection [Current] or acquire a connection
+ from the connection pool [Requested].</li>
+ <li>Authenticate the user by retrieving the user's Distinguished Name,
+ based on the specified username and password.</li>
+ <li>If the user was not authenticated, release the allocated connection
+ and return <code>null</code>.</li>
+ <li>Acquire a <code>List</code> of the security roles assigned to the
+ authenticated user.</li>
+ <li>Construct a new instance of class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as
+ constructor arguments: this realm instance, the authenticated
+ username, and a <code>List</code> of the security roles associated
+ with this user.</li>
+ <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous
+ <code>GenericPrincipal</code> objects for a particular user, because
+ the information in the directory server might have changed since the
+ last time this user was authenticated.</li>
+ <li>Return the newly constructed <code>GenericPrincipal</code>.</li>
+ </ul>
+
+
+ <h3>Method hasRole() Functionality</h3>
+
+ <p>When <code>hasRole()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>The <code>principal</code> that is passed as an argument SHOULD
+ be one that we returned (instanceof class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, with a
+ <code>realm</code> property that is equal to our instance.</li>
+ <li>If the passed <code>principal</code> meets these criteria, check
+ the specified role against the list returned by
+ <code>getRoles()</code>, and return <code>true</code> if the
+ specified role is included; otherwise, return <code>false</code>.</li>
+ <li>If the passed <code>principal</code> does not meet these criteria,
+ return <code>false</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="Username Login Mode Functionality"><!--()--></a><a name="Username_Login_Mode_Functionality"><strong>Username Login Mode Functionality</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>Configurable Properties</h3>
+
+ <p>The implementation shall support the following properties
+ that can be configured with JavaBeans property setters:</p>
+ <ul>
+ <li><code>connectionURL</code> - URL of the directory server we will
+ be contacting.</li>
+ <li><code>contextFactory</code> - Fully qualified class name of the JNDI
+ context factory used to retrieve our InitialContext.
+ [com.sun.jndi.ldap.LdapCtxFactory]</li>
+ <li>Additional configuration properties required to establish the
+ appropriate connection. [Requested]</li>
+ <li>Connection pool configuration properties. [Requested]</li>
+ <li>Configuration properties defining if and how a user might be looked
+ up before binding to the directory server. The following approaches
+ should be supported:
+ <ul>
+ <li>No previous lookup is required - username specified by the user
+ is the same as that used to authenticate to the directory
+ server.</li>
+ <li>Substitute the specified username into a string.</li>
+ <li>Search the directory server based on configured criteria to
+ retrieve the distinguished name of the user, then attempt to
+ bind with that distinguished name.</li>
+ </ul></li>
+ <li>Configuration properties defining how the roles associated with a
+ particular authenticated user can be retrieved. The following
+ approaches should be supported:
+ <ul>
+ <li>Retrieve a specified attribute (possibly multi-valued)
+ from an LDAP search expression,
+ with a replacement placeholder for the DN of the user.
+ [Current]</li>
+ </ul></li>
+ </ul>
+
+ <h3>Lifecycle Functionality</h3>
+
+ <p>The following processing must be performed when the <code>start()</code>
+ method is called:</p>
+ <ul>
+ <li>None required.</li>
+ </ul>
+
+ <p>The following processing must be performed when the <code>stop()</code>
+ method is called:</p>
+ <ul>
+ <li>None required.</li>
+ </ul>
+
+
+ <h3>Method authenticate() Functionality</h3>
+
+ <p>When <code>authenticate()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>Attempt to bind to the directory server, using the username and
+ password provided by the user.</li>
+ <li>If the user was not authenticated, release the allocated connection
+ and return <code>null</code>.</li>
+ <li>Acquire a <code>List</code> of the security roles assigned to the
+ authenticated user.</li>
+ <li>Construct a new instance of class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, passing as
+ constructor arguments: this realm instance, the authenticated
+ username, and a <code>List</code> of the security roles associated
+ with this user.</li>
+ <li><strong>WARNING</strong> - Do not attempt to cache and reuse previous
+ <code>GenericPrincipal</code> objects for a particular user, because
+ the information in the directory server might have changed since the
+ last time this user was authenticated.</li>
+ <li>Return the newly constructed <code>GenericPrincipal</code>.</li>
+ </ul>
+
+
+ <h3>Method hasRole() Functionality</h3>
+
+ <p>When <code>hasRole()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>The <code>principal</code> that is passed as an argument SHOULD
+ be one that we returned (instanceof class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, with a
+ <code>realm</code> property that is equal to our instance.</li>
+ <li>If the passed <code>principal</code> meets these criteria, check
+ the specified role against the list returned by
+ <code>getRoles()</code>, and return <code>true</code> if the
+ specified role is included; otherwise, return <code>false</code>.</li>
+ <li>If the passed <code>principal</code> does not meet these criteria,
+ return <code>false</code>.</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="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 <code>JNDIRealm</code>:</p>
+ <ul>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/fs-memory-realm.html b/webapps/docs/funcspecs/fs-memory-realm.html
new file mode 100644
index 0000000..9d9b7bb
--- /dev/null
+++ b/webapps/docs/funcspecs/fs-memory-realm.html
@@ -0,0 +1,253 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+
+ <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 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,
+ without the complexity of configuring a database or directory server
+ based Realm. It is not intended for production use.</p>
+
+ <p>This specification reflects a combination of functionality that is
+ already present in the <code>org.apache.catalina.realm.MemoryRealm</code>
+ class, as well as requirements for enhancements that have been
+ discussed. Where appropriate, requirements statements are marked
+ <em>[Current]</em> and <em>[Requested]</em> to distinguish them.</p>
+
+ <p>The current status of this functional specification is
+ <strong>PROPOSED</strong>. It has not yet been discussed and
+ agreed to on the TOMCAT-DEV mailing list.</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>The implementation of this functionality depends on the following
+ external specifications:</p>
+ <ul>
+ <li>None</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="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>Be realized in one or more implementation classes.</li>
+ <li>Implement the <code>org.apache.catalina.Realm</code> interface.
+ [Current]</li>
+ <li>Implement the <code>org.apache.catalina.Lifecycle</code>
+ interface. [Current]</li>
+ <li>Subclass the <code>org.apache.catalina.realm.RealmBase</code>
+ base class.</li>
+ <li>Live in the <code>org.apache.catalina.realm</code> package.
+ [Current]</li>
+ <li>Support a configurable debugging detail level. [Current]</li>
+ <li>Log debugging and operational messages (suitably internationalized)
+ via the <code>getContainer().log()</code> method. [Current]</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
+ MemoryRealm to operate correctly:</p>
+ <ul>
+ <li>The desire to utilize MemoryRealm must be registered in
+ <code>$CATALINA_BASE/conf/server.xml</code>, in a
+ <code><Realm></code> element that is nested inside a
+ corresponding <code><Engine></code>, <code><Host></code>,
+ or <code><Context></code> element. (This is already
+ included in the default <code>server.xml</code> file.)</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 MemoryRealm depends on the following
+ specific features of the surrounding container:</p>
+ <ul>
+ <li>Interactions with <code>MemoryRealm</code> will be initiated by
+ the appropriate <code>Authenticator</code> implementation, based
+ on the login method that is selected.</li>
+ <li><code>MemoryRealm</code> must have an XML parser compatible with
+ the JAXP/1.1 APIs available to it. This is normally accomplished
+ by placing the corresponding JAR files in directory
+ <code>$CATALINA_HOME/lib</code>.</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="Overview of Operation"><!--()--></a><a name="Overview_of_Operation"><strong>Overview of Operation</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The main purpose of <code>MemoryRealm</code> is to allow Catalina to
+ authenticate users, and look up the corresponding security roles, from
+ the information found in an XML-format configuration file. The format
+ of this file is described below. When a <code>MemoryRealm</code>
+ instance is started, it will read the contents of this XML file and create
+ an "in memory database" of all the valid users and their associated
+ security roles.</p>
+
+ <p>Each time that Catalina needs to authenticate a user, it will call
+ the <code>authenticate()</code> method of this Realm implementation,
+ passing the username and password that were specified by the user. If
+ we find the user in the database (and match on the password), we accumulate
+ all of the security roles that are defined for this user, and create a
+ new <code>GenericPrincipal</code> object to be returned. If the user
+ is not authenticated, we return <code>null</code> instead. The
+ <code>GenericUser</code> object caches the set of security roles that
+ were owned by this user at the time of authentication, so that calls to
+ <code>isUserInRole()</code> can be answered without going back to the
+ database every 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="Detailed Functional Requirements"><!--()--></a><a name="Detailed_Functional_Requirements"><strong>Detailed Functional Requirements</strong></a></font></td></tr><tr><td><blockquote>
+
+
+ <h3>Configurable Properties</h3>
+
+ <p>The implementation shall support the following properties
+ that can be configured with JavaBeans property setters:</p>
+ <ul>
+ <li>Configurable debugging detail level.</li>
+ <li>Configurable file pathname (absolute or relative to
+ <code>$CATALINA_BASE</code> of the XML file containing our
+ defined users. [<code>conf/tomcat-users.xml</code>].</li>
+ </ul>
+
+ <h3>Lifecycle Functionality</h3>
+
+ <p>The following processing must be performed when the <code>start()</code>
+ method is called:</p>
+ <ul>
+ <li>Open and parse the specified XML file.</li>
+ <li>Create an in-memory database representation of the XML file
+ contents.</li>
+ <li><strong>NOTE</strong> - There is no requirement to recognize
+ subsequent changes to the contents of the XML file.</li>
+ </ul>
+
+ <p>The following processing must be performed when the <code>stop()</code>
+ method is called:</p>
+ <ul>
+ <li>Release object references to the in-memory database representation.</li>
+ </ul>
+
+
+ <h3>Method authenticate() Functionality</h3>
+
+ <p>When <code>authenticate()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>Select the one and only "user" instance from the in-memory database,
+ based on matching the specified username. If there is no such
+ instance, return <code>null</code>.</li>
+ <li>Authenticate the user by comparing the (possibly encrypted) password
+ value that was received against the password presented by the user.
+ If there is no match, return <code>null</code>.</li>
+ <li>Construct a new instance of class
+ <code>org.apache.catalina.realm.GenericPrincipal</code> (if not
+ already using this as the internal database representation) that
+ contains the authenticated username and a <code>List</code> of the
+ security roles associated with this user.</li>
+ <li>Return the newly constructed <code>GenericPrincipal</code>.</li>
+ </ul>
+
+
+ <h3>Method hasRole() Functionality</h3>
+
+ <p>When <code>hasRole()</code> is called, the following processing
+ is required:</p>
+ <ul>
+ <li>The <code>principal</code> that is passed as an argument SHOULD
+ be one that we returned (instanceof class
+ <code>org.apache.catalina.realm.GenericPrincipal</code>, with a
+ <code>realm</code> property that is equal to our instance.</li>
+ <li>If the passed <code>principal</code> meets these criteria, check
+ the specified role against the list returned by
+ <code>getRoles()</code>, and return <code>true</code> if the
+ specified role is included; otherwise, return <code>false</code>.</li>
+ <li>If the passed <code>principal</code> does not meet these criteria,
+ return <code>false</code>.</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="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 <code>MemoryRealm</code>:</p>
+ <ul>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/index.html b/webapps/docs/funcspecs/index.html
new file mode 100644
index 0000000..90469c3
--- /dev/null
+++ b/webapps/docs/funcspecs/index.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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. 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>
+
+<p>The functional specifications are divided into the following categories
+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 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 distribution.</li>
+</ul>
+
+<p><em>NOTE</em> - In some cases, the contents of these functional specs has
+been "reverse engineered" from existing implementations. This exercise is
+still useful, because it provides an introduction to <strong>what</strong>
+Catalina does, without being as concerned with <strong>how</strong> this is
+accomplished.</p>
+
+<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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/funcspecs/mbean-names.html b/webapps/docs/funcspecs/mbean-names.html
new file mode 100644
index 0000000..7c502e7
--- /dev/null
+++ b/webapps/docs/funcspecs/mbean-names.html
@@ -0,0 +1,756 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Catalina Functional Specifications (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.42, Jul 2 2013</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 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>
+
+ <p>We will be using <em>JMX MBeans</em> as the technology for
+ implementing manageability of Tomcat.</p>
+
+ <p>One of the key concepts of JMX (and JSR-77) is that each management
+ bean has a unique name in the MBeanServer's registry, and that
+ management applications can utilize these names to retrieve the MBean
+ of interest to them for a particular management operation.
+ This document proposes a naming convention for MBeans that allows easy
+ calculation of the name for a particular MBean. For background
+ information on JMX MBean names, see the <em>Java Management Extensions
+ Instrumentation and Agent Specification</em>, version 1.0, section 6.
+ In particular, we will be discussing the String Representation of
+ <code>ObjectName</code> instances.</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="Catalina Object Hierarchy"><!--()--></a><a name="Catalina_Object_Hierarchy"><strong>Catalina Object Hierarchy</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Tomcat's servlet container implementation, called Catalina, can be
+represented as a hierarchy of objects that contain references to each other.
+The object hierarchy can be represented as a tree, or (isomorphically) based
+on the nesting of configuration elements in the <code>conf/server.xml</code>
+file that is traditionally used to configure Tomcat stand-alone.</p>
+
+<p>The valid component nestings for Catalina are depicted in the following
+table, with columns that contain the following values:</p>
+<ul>
+<li><em>Pattern</em> - Nesting pattern of XML elements (in the
+ <code>conf/server.xml</code> file) used to configure this component.</li>
+<li><em>Cardinality</em> - Minimum and maximum number of occurrences of
+ this element at this nesting position, which also corresponds to the
+ minimum and maximum number of Catalina components.</li>
+<li><em>Identifier</em> - Name of the JavaBeans property of this component
+ that represents the unique identifier (within the nested hierarchy),
+ if any.</li>
+<li><em>MBean ObjectName</em> - The portion of the MBean object name that
+ appears <strong>after</strong> the domain name. For now, it should be
+ assumed that all of these MBeans appear in the default JMX domain.</li>
+</ul>
+
+<p>In the <em>MBean ObjectName</em> descriptions, several types of symbolic
+expressions are utilized to define variable text that is replaced by
+corresponding values:</p>
+<ul>
+<li><em>${GROUP}</em> - One of the standard MBean names of the specified
+ "group" category. For example, the expression <code>${REALM}</code>
+ represents the values like <code>JDBCRealm</code> and <code>JAASRealm</code>
+ that identify the various MBeans for possible <code>Realm</code> components.</li>
+<li><em>${name}</em> - Replaced by the value of property <code>name</code>
+ from the current component.</li>
+<li><em>${parent.name}</em> - Replaced by the value of property
+ <code>name</code> from a parent of the current component, with the
+ parent's type identified by <em>parent</em>.</li>
+<li><em>${###}</em> - An arbitrary numeric identifier that preserves
+ order but has no other particular meaning. In general, the server will
+ assign numeric values to existing instances with large gaps into which
+ new items can be configured if desired.</li>
+</ul>
+
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Pattern</th>
+ <th align="center" bgcolor="aqua">Cardinality</th>
+ <th align="center" bgcolor="aqua">Identifier</th>
+ <th align="center" bgcolor="aqua">MBean ObjectName</th>
+ </tr>
+
+ <tr>
+ <td>Server</td>
+ <td align="center">1..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${SERVER}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Listener</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LISTENER}, sequence=${###}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service</td>
+ <td align="center">1..n</td>
+ <td align="center"><code>name</code></td>
+ <td><code>type=${SERVICE}, name=${name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Connector</td>
+ <td align="center">1..n</td>
+ <td align="center"><code>address, port</code></td>
+ <td><code>type=${CONNECTOR}, service=${service}, port=${port},
+ address=${address}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Connector / Factory</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td>(Only defined explicitly for an SSL connector, but can be treated
+ as part of the connector component)</td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Connector / Listener</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LISTENER}, sequence=${###}, service=${service},
+ port=${connector.port}, address=${connector.address}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine</td>
+ <td align="center">1..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${ENGINE}, service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host</td>
+ <td align="center">1..n</td>
+ <td align="center"><code>name</code></td>
+ <td><code>type=${HOST}, host=${name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context</td>
+ <td align="center">1..n</td>
+ <td align="center"><code>path</code></td>
+ <td><code>type=${CONTEXT}, context=${name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <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=${###},
+ 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=${###}, context=${context.name},
+ host=${host.name}, service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Loader</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LOADER}, context=${context.name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Manager</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${MANAGER}, context=${context.name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Realm</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${REALM}, context=${context.name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Resources</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${RESOURCES}, context=${context.name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Valve</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${VALVE}, sequence=${###}, context=${context.name},
+ host=${host.name}, service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Context / Wrapper</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>j2eeType=Servlet,name=${name},
+ WebModule=//${host.name}/${context.name},
+ J2EEApplication=${context.J2EEApplication},
+ J2EEServer=${context.J2EEServer}</code></td>
+ </tr>
+
+ <tr>
+ <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=${###},
+ 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=${###},
+ context=${context.name}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Listener</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LISTENER}, sequence=${###}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Realm</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${REALM}, host=${host.name},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Host / Valve</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${VALVE}, sequence=${###},
+ host=${host.name}, service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Listener</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LISTENER}, sequence=${###}</code>
+ (<strong>FIXME</strong> - disambiguate from Server / Service /
+ Listener)</td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Realm</td>
+ <td align="center">0..1</td>
+ <td align="center">(none)</td>
+ <td><code>type=${REALM}, service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Engine / Valve</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${VALVE}, sequence=${###},
+ service=${service.name}</code></td>
+ </tr>
+
+ <tr>
+ <td>Server / Service / Listener</td>
+ <td align="center">0..n</td>
+ <td align="center">(none)</td>
+ <td><code>type=${LISTENER}, sequence=${###}</code>
+ (<strong>FIXME</strong> - disambiguate from Server / Service /
+ Engine / Listener)</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="MBean Groups and Names"><!--()--></a><a name="MBean_Groups_and_Names"><strong>MBean Groups and Names</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The following MBean names shall be defined in the resource file
+<code>/org/apache/catalina/mbeans/mbeans-descriptors.xml</code> (and
+therefore available for use within the Administration/Configuration
+web application for Tomcat):</p>
+
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">MBean Name</th>
+ <th align="center" bgcolor="aqua">Group Name</th>
+ <th align="center" bgcolor="aqua">Catalina Interface</th>
+ <th align="center" bgcolor="aqua">Implementation Class</th>
+ </tr>
+
+ <tr>
+ <td><code>AccessLogValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.AccessLogValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>BasicAuthenticator</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.authenticator.BasicAuthenticator</code></td>
+ </tr>
+
+ <tr>
+ <td><code>CertificatesValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.CertificatesValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ContextConfig</code></td>
+ <td align="center"><code>LISTENER</code></td>
+ <td><code>org.apache.catalina.LifecycleListener</code></td>
+ <td><code>org.apache.catalina.startup.ContextConfig</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ContextEnvironment</code></td>
+ <td align="center"><code>RESOURCES</code></td>
+ <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td>
+ <td><code>org.apache.catalina.deploy.ContextEnvironment</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ContextResource</code></td>
+ <td align="center"><code>RESOURCES</code></td>
+ <td><code>org.apache.catalina.deploy.ContextResource</code></td>
+ <td><code>org.apache.catalina.deploy.ContextResource</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ContextResourceLink</code></td>
+ <td align="center"><code>RESOURCES</code></td>
+ <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td>
+ <td><code>org.apache.catalina.deploy.ContextResourceLink</code></td>
+ </tr>
+
+ <tr>
+ <td><code>CoyoteConnector</code></td>
+ <td align="center"><code>CONNECTOR</code></td>
+ <td><code>org.apache.catalina.Connector</code></td>
+ <td><code>org.apache.coyote.tomcat4.CoyoteConnector</code></td>
+ </tr>
+
+ <tr>
+ <td><code>DigestAuthenticator</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.authenticator.DigestAuthenticator</code></td>
+ </tr>
+
+ <tr>
+ <td><code>EngineConfig</code></td>
+ <td align="center"><code>LISTENER</code></td>
+ <td><code>org.apache.catalina.LifecycleListener</code></td>
+ <td><code>org.apache.catalina.startup.EngineConfig</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ErrorReportValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.ErrorReportValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>ErrorDispatcherValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.ErrorDispatcherValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>FormAuthenticator</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.authenticator.FormAuthenticator</code></td>
+ </tr>
+
+ <tr>
+ <td><code>Group</code></td>
+ <td align="center"><code>GROUP</code></td>
+ <td><code>org.apache.catalina.Group</code></td>
+ <td><code>org.apache.catalina.Group</code></td>
+ </tr>
+
+ <tr>
+ <td><code>HostConfig</code></td>
+ <td align="center"><code>LISTENER</code></td>
+ <td><code>org.apache.catalina.LifecycleListener</code></td>
+ <td><code>org.apache.catalina.startup.HostConfig</code></td>
+ </tr>
+
+ <tr>
+ <td><code>HttpConnector10</code></td>
+ <td align="center"><code>CONNECTOR</code></td>
+ <td><code>org.apache.catalina.Connector</code></td>
+ <td><code>org.apache.catalina.connector.http10.HttpConnector</code></td>
+ </tr>
+
+ <tr>
+ <td><code>HttpConnector11</code></td>
+ <td align="center"><code>CONNECTOR</code></td>
+ <td><code>org.apache.catalina.Connector</code></td>
+ <td><code>org.apache.catalina.connector.http.HttpConnector</code></td>
+ </tr>
+
+ <tr>
+ <td><code>JAASRealm</code></td>
+ <td align="center"><code>REALM</code></td>
+ <td><code>org.apache.catalina.Realm</code></td>
+ <td><code>org.apache.catalina.realm.JAASRealm</code></td>
+ </tr>
+
+ <tr>
+ <td><code>JDBCRealm</code></td>
+ <td align="center"><code>REALM</code></td>
+ <td><code>org.apache.catalina.Realm</code></td>
+ <td><code>org.apache.catalina.realm.JDBCRealm</code></td>
+ </tr>
+
+ <tr>
+ <td><code>JDBCUserDatabase</code></td>
+ <td align="center"><code>USERDATABASE</code></td>
+ <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td>
+ <td><code>org.apache.catalina.users.JDBCUserDatabase</code></td>
+ </tr>
+
+ <tr>
+ <td><code>JNDIRealm</code></td>
+ <td align="center"><code>REALM</code></td>
+ <td><code>org.apache.catalina.Realm</code></td>
+ <td><code>org.apache.catalina.realm.JNDIRealm</code></td>
+ </tr>
+
+ <tr>
+ <td><code>MBeanFactory</code></td>
+ <td align="center"><code></code></td>
+ <td><code></code></td>
+ <td><code>org.apache.catalina.mbeans.MBeanFactory</code></td>
+ </tr>
+
+ <tr>
+ <td><code>MemoryRealm</code></td>
+ <td align="center"><code>REALM</code></td>
+ <td><code>org.apache.catalina.Realm</code></td>
+ <td><code>org.apache.catalina.realm.MemoryRealm</code></td>
+ </tr>
+
+ <tr>
+ <td><code>MemoryUserDatabase</code></td>
+ <td align="center"><code>USERDATABASE</code></td>
+ <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td>
+ <td><code>org.apache.catalina.users.MemoryUserDatabase</code></td>
+ </tr>
+
+ <tr>
+ <td><code>NamingContextListener</code></td>
+ <td align="center"><code>LISTENER</code></td>
+ <td><code>org.apache.catalina.LifecycleListener</code></td>
+ <td><code>org.apache.catalina.core.NamingContextListener</code></td>
+ </tr>
+
+ <tr>
+ <td><code>NamingResources</code></td>
+ <td align="center"><code>RESOURCES</code></td>
+ <td><code>org.apache.catalina.deploy.NamingResources</code></td>
+ <td><code>org.apache.catalina.deploy.NamingResources</code></td>
+ </tr>
+
+ <tr>
+ <td><code>NonLoginAuthenticator</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.authenticator.NonLoginAuthenticator</code></td>
+ </tr>
+
+ <tr>
+ <td><code>PersistentManager</code></td>
+ <td align="center"><code>MANAGER</code></td>
+ <td><code>org.apache.catalina.Manager</code></td>
+ <td><code>org.apache.catalina.session.PersistentManager</code></td>
+ </tr>
+
+ <tr>
+ <td><code>RemoteAddrValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.RemoteAddrValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>RemoteHostValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.RemoteHostValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>RequestDumperValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.RequestDumperValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>Role</code></td>
+ <td align="center"><code>ROLE</code></td>
+ <td><code>org.apache.catalina.Role</code></td>
+ <td><code>org.apache.catalina.Role</code></td>
+ </tr>
+
+ <tr>
+ <td><code>SingleSignOn</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.valves.SingleSignOn</code></td>
+ </tr>
+
+ <tr>
+ <td><code>SSLAuthenticator</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.authenticator.SSLAuthenticator</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardContext</code></td>
+ <td align="center"><code>CONTEXT</code></td>
+ <td><code>org.apache.catalina.Context</code></td>
+ <td><code>org.apache.catalina.core.StandardContext</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardContextValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.core.StandardContextValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardEngine</code></td>
+ <td align="center"><code>ENGINE</code></td>
+ <td><code>org.apache.catalina.Engine</code></td>
+ <td><code>org.apache.catalina.core.StandardEngine</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardEngineValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.core.StandardEngineValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardHost</code></td>
+ <td align="center"><code>HOST</code></td>
+ <td><code>org.apache.catalina.Host</code></td>
+ <td><code>org.apache.catalina.core.StandardHost</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardHostValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.core.StandardHostValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardManager</code></td>
+ <td align="center"><code>MANAGER</code></td>
+ <td><code>org.apache.catalina.Manager</code></td>
+ <td><code>org.apache.catalina.session.StandardManager</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardServer</code></td>
+ <td align="center"><code>SERVER</code></td>
+ <td><code>org.apache.catalina.Server</code></td>
+ <td><code>org.apache.catalina.core.StandardServer</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardService</code></td>
+ <td align="center"><code>SERVICE</code></td>
+ <td><code>org.apache.catalina.Service</code></td>
+ <td><code>org.apache.catalina.core.StandardService</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardWrapper</code></td>
+ <td align="center"><code>WRAPPER</code></td>
+ <td><code>org.apache.catalina.Wrapper</code></td>
+ <td><code>org.apache.catalina.core.StandardWrapper</code></td>
+ </tr>
+
+ <tr>
+ <td><code>StandardWrapperValve</code></td>
+ <td align="center"><code>VALVE</code></td>
+ <td><code>org.apache.catalina.Valve</code></td>
+ <td><code>org.apache.catalina.core.StandardWrapperValve</code></td>
+ </tr>
+
+ <tr>
+ <td><code>User</code></td>
+ <td align="center"><code>USER</code></td>
+ <td><code>org.apache.catalina.User</code></td>
+ <td><code>org.apache.catalina.User</code></td>
+ </tr>
+
+ <tr>
+ <td><code>UserDatabaseRealm</code></td>
+ <td align="center"><code>REALM</code></td>
+ <td><code>org.apache.catalina.Realm</code></td>
+ <td><code>org.apache.catalina.realm.UserDatabaseRealm</code></td>
+ </tr>
+
+ <tr>
+ <td><code>WebappLoader</code></td>
+ <td align="center"><code>LOADER</code></td>
+ <td><code>org.apache.catalina.Loader</code></td>
+ <td><code>org.apache.catalina.loader.WebappLoader</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="JSR-77 Cross Reference"><!--()--></a><a name="JSR-77_Cross_Reference"><strong>JSR-77 Cross Reference</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The managed objects in the JSR-77 object hierarchy correspond
+to the specified MBean names or groups as follows:</p>
+
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">JSR-77 Managed Object</th>
+ <th align="center" bgcolor="aqua">MBean Name or Group</th>
+ <th align="center" bgcolor="aqua">Comments</th>
+ </tr>
+
+ <tr>
+ <td><code>J2EEServer</code></td>
+ <td><code>${SERVICE}</code></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td><code>Node</code></td>
+ <td><code>${SERVICE}</code></td>
+ <td>Tomcat supports a single node only.</td>
+ </tr>
+
+ <tr>
+ <td><code>Port</code></td>
+ <td><code>${CONNECTOR}</code></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td><code>Servlet</code></td>
+ <td><code>${WRAPPER}</code></td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td><code>WebModule</code></td>
+ <td><code>${CONTEXT}</code></td>
+ <td></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="JSR-88 Cross Reference"><!--()--></a><a name="JSR-88_Cross_Reference"><strong>JSR-88 Cross Reference</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The deployment objects in the JSR-88 API object hierarchy correspond
+to the specified MBean names or groups as follows:</p>
+
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">JSR-88 API Object</th>
+ <th align="center" bgcolor="aqua">MBean Name or Group</th>
+ <th align="center" bgcolor="aqua">Comments</th>
+ </tr>
+
+ <tr>
+ <td><code>DeployableObject</code></td>
+ <td><code>${CONTEXT}</code></td>
+ <td>Context deployment info plus the corresponding WAR file</td>
+ </tr>
+
+ <tr>
+ <td><code>Target</code></td>
+ <td><code>${HOST}</code></td>
+ <td></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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/html-manager-howto.html b/webapps/docs/html-manager-howto.html
new file mode 100644
index 0000000..eac6a8c
--- /dev/null
+++ b/webapps/docs/html-manager-howto.html
@@ -0,0 +1,577 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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></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
+to manage your web applications without having to shut down and restart
+Tomcat. This document is for the HTML web interface to the web application
+<a href="manager-howto.html">manager</a>.</p>
+
+<p>The interface is divided into six sections:</p>
+<ul>
+ <li><strong>Message</strong> - Displays success and failure messages.</li>
+ <li><strong>Manager</strong> - General manager operations like list and
+ help.</li>
+ <li><strong>Applications</strong> - List of web applications and
+ commands.</li>
+ <li><strong>Deploy</strong> - Deploying web applications.</li>
+ <li><strong>Diagnostics</strong> - Identifying potential problems.</li>
+ <li><strong>Server Information</strong> - Information about the Tomcat
+ server.</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="Message"><strong>Message</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>
+Displays information about the success or failure of the last web application
+manager command you performed. If it succeeded <strong>OK</strong> is displayed
+and may be followed by a success message. If it failed <strong>FAIL</strong>
+is displayed followed by an error message. Common failure messages are
+documented below for each command. The complete list of failure messages for
+each command can be found in the <a href="manager-howto.html">manager</a> web
+application documentation.
+</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="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The Manager section has three links:</p>
+<ul>
+ <li><strong>List Applications</strong> - Redisplay a list of web
+ applications.</li>
+ <li><strong>HTML Manager Help</strong> - A link to this document.</li>
+ <li><strong>Manager Help</strong> - A link to the comprehensive Manager
+ App HOW TO.</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="Applications"><strong>Applications</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The Applications section lists information about all the installed web
+applications and provides links for managing them. For each web application
+the following is displayed:</p>
+<ul>
+ <li><strong>Path</strong> - The web application context path.</li>
+ <li><strong>Display Name</strong> - The display name for the web application
+ if it has one configured in its "web.xml" file.</li>
+ <li><strong>Running</strong> - Whether the web application is running and
+ available (true), or not running and unavailable (false).</li>
+ <li><strong>Sessions</strong> - The number of active sessions for remote
+ users of this web application. The number of sessions is a link which
+ when submitted displays more details about session usage by the web
+ application in the Message box.</li>
+ <li><strong>Commands</strong> - Lists all commands which can be performed on
+ the web application. Only those commands which can be performed will be
+ listed as a link which can be submitted. No commands can be performed on
+ the manager web application itself. The following commands can be
+ performed:
+ <ul>
+ <li><strong>Start</strong> - Start a web application which had been
+ stopped.</li>
+ <li><strong>Stop</strong> - Stop a web application which is currently
+ running and make it unavailable.</li>
+ <li><strong>Reload</strong> - Reload the web application so that new
+ ".jar" files in <code>/WEB-INF/lib/</code> or new classes in
+ <code>/WEB-INF/classes/</code> can be used.</li>
+ <li><strong>Undeploy</strong> - Stop and then remove this web
+ application from the server.</li>
+ </ul>
+ </li>
+</ul>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Start"><strong>Start</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Signal a stopped application to restart, and make itself available again.
+Stopping and starting is useful, for example, if the database required by
+your application becomes temporarily unavailable. It is usually better to
+stop the web application that relies on this database rather than letting
+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>
+
+<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 logs for the details.</p>
+ </blockquote></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><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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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"><strong>Stop</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Signal an existing application to make itself unavailable, but leave it
+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>
+
+<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 stop the web application.
+ Check the Tomcat logs for the details.</p>
+ </blockquote></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><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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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="Reload"><strong>Reload</strong></a></font></td></tr><tr><td><blockquote>
+
+<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
+updated classes or property files in the <code>/WEB-INF/classes</code>
+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 checked on a reload;
+the previous web.xml configuration is used.
+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 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 - 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>
+
+<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 logs for the details.</p>
+ </blockquote></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><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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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
+ <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>
+</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
+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
+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>
+
+<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 undeploy the web application.
+ Check the Tomcat logs for the details.</p>
+ </blockquote></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><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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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="Deploy"><strong>Deploy</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Web applications can be deployed using files or directories located
+on the Tomcat server or you can upload a web application archive (WAR)
+file to the server.</p>
+
+<p>To install an application, fill in the appropriate fields for the type
+of install you want to do and then submit it using the <i>Install</i>
+button.</p>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy directory or WAR file located on server"><!--()--></a><a name="Deploy_directory_or_WAR_file_located_on_server"><strong>Deploy directory or WAR file located on server</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Deploy and start a new web application, attached to the specified <i>Context
+Path:</i> (which must not be in use by any other web application).
+This command is the logical opposite of the <em>Undeploy</em> command.</p>
+
+<p>There are a number of different ways the deploy command can be used.</p>
+
+<h3>Deploy a Directory or WAR by URL</h3>
+
+<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
+war file name without the ".war" extension is used as the path. The
+<i>WAR or Directory URL</i> 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 the entire WAR file.</p>
+
+<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
+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>
+
+
+<p>In this example the ".war" file <code>/path/to/bar.war</code> on the
+Tomcat server (running on Unix) is deployed as the web application
+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>
+
+
+<h3>Deploy a Directory or War from the Host appBase</h3>
+
+<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
+or the war file name without the ".war" extension is used as the path.</p>
+
+<p>In this example the web application located in a subdirectory 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 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>
+
+
+<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>
+
+
+<h3>Deploy using a Context configuration ".xml" file</h3>
+
+<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
+".war" file or web application directory. The <i>Context Path</i>
+is not used when installing a web application using a context ".xml"
+configuration file.</p>
+
+<p>A Context configuration ".xml" file can contain valid XML for a
+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>
+<Context path="/foobar" docBase="C:\path\to\application\foobar">
+</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>
+
+
+<p>Use of the <i>WAR or Directory URL</i> is optional. When used
+to select a web application ".war" file or directory it overrides any
+docBase configured in the context configuration ".xml" file.</p>
+
+<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>
+
+
+<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>
+
+
+</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>
+
+<p>Upload a WAR file from your local system and install it into the
+appBase for your Host. The name of the WAR file without the ".war"
+extension is used as the context path name.</p>
+
+<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
+<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><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><em>File upload failed, no file</em>
+ <blockquote>
+ <p>The file upload failed, no file was received by the server.</p>
+ </blockquote></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>
+</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="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 install 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 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>
+
+<p>For security when untrusted users can manage web applications, the
+Host deployXML flag can be set to false. This prevents untrusted users
+from installing web applications using a configuration XML file and
+also prevents them from installing application directories or ".war"
+files located outside of their Host appBase.</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="Deploy Message"><!--()--></a><a name="Deploy_Message"><strong>Deploy Message</strong></a></font></td></tr><tr><td><blockquote>
+
+<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>
+
+<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><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><em>Encountered exception</em>
+ <blockquote>
+ <p>An exception was encountered trying to start the new web application.
+ 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><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><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><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 the Context
+ path must match the directory name or war file name without the ".war"
+ extension.
+ </blockquote></li>
+<li><em>Only web applications in the Host web application directory can
+ be deployed</em>
+ <blockquote>
+ 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>
+</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="Diagnostics"><strong>Diagnostics</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="Finding memory leaks"><!--()--></a><a name="Finding_memory_leaks"><strong>Finding memory leaks</strong></a></font></td></tr><tr><td><blockquote>
+
+<p><strong>The find leaks diagnostic triggers a full garbage collection. It
+should be used with extreme caution on production systems.</strong></p>
+
+<p>The find leaks diagnostic attempts to identify web applications that have
+caused memory leaks when they were stopped, reloaded or undeployed. Results
+should always be confirmed
+with a profiler. The diagnostic uses additional functionality provided by the
+StandardHost implementation. It will not work if a custom host is used that
+does not extend StandardHost.</p>
+
+<p>This diagnostic will list context paths for the web applications that were
+stopped, reloaded or undeployed, but which classes from the previous runs
+are still present in memory, thus being a memory leak. If an application
+has been reloaded several times, it may be listed several times.</p>
+
+<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>
+
+</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>
+
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/images/add.gif b/webapps/docs/images/add.gif
new file mode 100644
index 0000000..0774d07
--- /dev/null
+++ b/webapps/docs/images/add.gif
Binary files differ
diff --git a/webapps/docs/images/asf-logo.gif b/webapps/docs/images/asf-logo.gif
new file mode 100644
index 0000000..22eb9d7
--- /dev/null
+++ b/webapps/docs/images/asf-logo.gif
Binary files differ
diff --git a/webapps/docs/images/code.gif b/webapps/docs/images/code.gif
new file mode 100644
index 0000000..d27307b
--- /dev/null
+++ b/webapps/docs/images/code.gif
Binary files differ
diff --git a/webapps/docs/images/cors-flowchart.png b/webapps/docs/images/cors-flowchart.png
new file mode 100644
index 0000000..9abb09d
--- /dev/null
+++ b/webapps/docs/images/cors-flowchart.png
Binary files differ
diff --git a/webapps/docs/images/design.gif b/webapps/docs/images/design.gif
new file mode 100644
index 0000000..f5db0a9
--- /dev/null
+++ b/webapps/docs/images/design.gif
Binary files differ
diff --git a/webapps/docs/images/docs.gif b/webapps/docs/images/docs.gif
new file mode 100644
index 0000000..d64a4a1
--- /dev/null
+++ b/webapps/docs/images/docs.gif
Binary files differ
diff --git a/webapps/docs/images/fix.gif b/webapps/docs/images/fix.gif
new file mode 100644
index 0000000..d59ad64
--- /dev/null
+++ b/webapps/docs/images/fix.gif
Binary files differ
diff --git a/webapps/docs/images/printer.gif b/webapps/docs/images/printer.gif
new file mode 100644
index 0000000..5021187
--- /dev/null
+++ b/webapps/docs/images/printer.gif
Binary files differ
diff --git a/webapps/docs/images/tomcat.gif b/webapps/docs/images/tomcat.gif
new file mode 100644
index 0000000..f2aa6f8
--- /dev/null
+++ b/webapps/docs/images/tomcat.gif
Binary files differ
diff --git a/webapps/docs/images/tomcat.svg b/webapps/docs/images/tomcat.svg
new file mode 100644
index 0000000..3636850
--- /dev/null
+++ b/webapps/docs/images/tomcat.svg
@@ -0,0 +1,967 @@
+<?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
+ 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.
+-->
+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78) -->
+<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">
+
+<svg:metadata
+ id="metadata61"><rdf:RDF>
+
+ <rdf:Description
+ rdf:about="">
+ </rdf:Description>
+
+ <rdf:Description
+ rdf:about="">
+ </rdf:Description>
+
+ <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">
+ <xapGImg:format>JPEG</xapGImg:format>
+ <xapGImg:width>256</xapGImg:width>
+ <xapGImg:height>184</xapGImg:height>
+ <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="">
+ <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+
+<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
+GTSmvVZ/UhwNGq3xOD3oDkbjmDv9T63vvqy14UnNXW11u4O/3alurfHtgtVG3nKdbgsW1qtN3FFc
+ZfKcfyOv3o7hHXgdf8fm6Nt5D1rKrckEoIKBESXpy2reOB9Aqv7ne7pptTsEw4CIF78ycqXVG3YB
+KWRRPCCFl0XtX7UHwEOehqJsmJdlGfAmhiMy9BMlPiwwjAC/RMgj5Q193a2/Oq2/Y+6rQb+lLC45
+mpQ7/9XCqRg3xzBK68202xrd9jsTWASHTbKy4stBs9VVm8i7uW6NLJT8x+o/lQ6V2qjdmsBODbrT
+CaEUSZvhator1P5pjfQJroetfmVwR+ALiUJYFMWIWxQY5Rc2HHFLouyOMoA6ScEgC8tUp2TJtKwy
+No6E42gTRHHvi7Az16NOu9OPsYLoDnHYint2Ouo09S2Lcm5J+UHWEZYM/5e1/ysAw9onk1Zf2eZs
+v5ke9BDJY6Re2Ng+7Hp30FaezX4nT2C66VCBlfz9BvtRHHX6CIPrijyR3ordKTw6HQ2mw/P+x8Dl
+U05lEScd9a/78MunOzWajj/dlcGgC6dtroP6SBkFH44mxt5L54C+9uPrA601drrW7Xbao9rws9Ow
+Gt7i+Wweu3eXTgjbNGrpY5A/Z/8ufbPcIKi0gnL+0WxwizeWz/BPrz7odsY9fWBDi/67E0XARnVb
+/eZ4Nozypw5YofOX1rh8sEzrA1idYWtJa7b/V6s7GBrQOGup9Zvu+9poaDcsQvfR6TcBK+VpZ9LS
+N3rQGyIDd5c/a0NsXuipnBA4PcbzEQotPzgrvyArT5ARTv7ptsaug3x/8Hef/OGOuXxPgJLatDt5
+8bsPrmq9ljvoOih3gEm3tC6M+9rFqDzwG367cWn8MO/SuCLjfvgH/riAX76g6W+34L50P70w7ia0
+Pty4kIE9NF0HxRoA54673AcwLfxLAIQV6eA5rrFY6wI7axEginWXnbhBkMauhdZiY/bGt+XTYmoG
+gjbTKvgtwHBGpC6skHRYZyNZRnmkHBsc5v+ozTCQqdFmcBVWTV6CclJzed8OtL9hr/GvTgOxURv9
+o/z9cFm4ArlI/vBtN9W+QC3lCQzedvv+0+v2oUMIf/SBgvxAQt436+d/1bpTtYPsPjiHOeceT/4Z
+qk8PkqNRzQqCXmtSawLgvweAXQ+Av2qjTq3eRT1o/G8A4n8dhv9JLMT1Po3PTrc5avXVPiayNXQE
+mTXq1KcTBDRIHgUX1xIb15Dn4ZH4H95Y6iXNQ4zvOIPp2+2P3xpg5wx6cZvOBpi5/9lt0NawuB3k
+QewvuuUBHY7/rYvDNQRpyHFNKoC1A7leEYQ44areIeYk++9DlXEVi8TQHTS+W03n9fXB6vv3rU2D
+/k9SwQq84N98WCiRNL/28cff/2sScNztNP6/EH9kIeXBdNRoEa/Tv3JN8yD/4wjizFN2cNOqdf81
+pP6PpcBzXM3MAfjvWs1/rFbzd6c5+XRcEScyYVbk2H/ZilTgF1f12eq0P53VbVYSwgLL/9uWpUG/
+uK76YALqYaH1MVEciM4rdB+kBoN/z9IWF/AvEbYgm/4fl7WbEzgbAt7ggMAWRsVd8pxl3TM/BnFA
+uwu1fntaa7fcxcFwOjSRLnmhOGqNW6O/Wu5K6z8Td7bZmdTqnW5norJoMRLhI7MJZHdtNKkPaqOm
+u4HBAjfrHmmKnWPP9qilrdexb31GGRFO4CT7rpwOgGNPAwCOfesLQnyx2zzp4vPJqNYfD2uwr41/
+YLpO0z3u/Fdrtk0a2mX3sDZsjeBhb9olfjdNWjMax8RO19PJcDpx39TGk9ao81+ko1sPtajgRebe
+uWyNPx3eYOb2X6Mldwd61SYtWHmL2EhLO3/3QaUfAHBtdAOrx/3pstXsTHuGCV8MJ9+KPNX4CqCC
+kOHEbbB/TEdCIxfAvIr4qIb55rATNkFb63bGpqZebfytolnUMDasNXWzJHnuTk4ngxn2tP1nDAeM
+cX/MQB6RfqG/Wo0JkEy91q31G4t7PfcKYKzb6bfcEzhrdD3Hk9HgWzv7rE3nRrczBJJE581/4Dy0
+AW0Obwy1Uz/4qzUaooN0xl4ANY3BqNlqLm6D++BqMJl7vCrvcRhOp5YDne8djJqjcVhx4JgV74Vu
+tX5/MJmtXdnlhU4aHsbjeQ662HHabzh0AXkHJ6ZJdQSML/9nGNYlpdXo0GEwbE4dOoydRmgM5tmY
+qQOSzvIOgz6QyEShw6VzqT112iasyaonMOJ5lsQzNj1H5p7RiHXHueNnufNDZd+X7zp0AjY038/A
+lc1dP2vN1qi1fLwuiyezNlnaCXA3Ia6bpX16eGzHRkZu1a/fagPj/2v5YPUOnsF5CWYGvPVXq2s/
+yEd/Eh5P6+MlC8Muze5w9DGY8RcrKlO69UDbUbUDS3S3e9/hXm30PR58fIQVdZe6+0jX+yl6TwZD
+6r5d0LhnCLDpDPyh1TRDTdHdADVF7xnUFH3noF7ce+xLNJx6bbSMuLHfyBA9dOg6BGHQ6X8MnGYe
+GVZi3YUsRO0T5iK2C262PlCKGsxZa2ZMOn8N6hNMZHLsqIiij0532RHDjmMMdjr0mZMfVr0ao2Z4
+Ahq5ppFZnSDsM240+ssOo9Jn2G38Y9BrFvGmdKt1W+G/KPt9LiE77DUYtbWxlvZRx7Fi8NhlOBh3
+lhMZ9oL9Hn4ORv+lcraoXb/BqIO5YA4DdkfhmYJUx3Sx5X01WTkcTJYcG+ypMztrOgNadFAPsEe9
+M+nVhmYRadebrKI2Vl6i6DpYTuGzfnXVW7qsY7M17rT7TugeDkdhYkItoxbs9AlMbNxaxhtJt7/p
+uhndQksGc2Qi0Enfs2iUDwuWjAm6dTCJcE4cROSIU3eDOGClsLVsmnWeSQNWdOqqC4OozNl1NeJI
+ZG27GZBkxaewS1NJC1nCFqGTs7Y/nnTVXsNh035G7KbOOOtnPyB0wZPZtfLxL/RF2m+N5lyCS6dX
++muGgiHlyGoGEL/dFjGVdJM4PnPZYAJRUuvsRpuKyryyO504WW3icNZHoA6Oxi0cbWS/YOw5/u4M
+gVv2v504HCoEcNzbluu7GNQxvcywOt0TA52yxbL72mS8zvlP1D4FtKIxexGz2IiPa6kHRX3rdFRr
+ooAgbyk+FTtDZPaO4jc4uFP8ASk7f4AKumrfV3RrybZP2c4HoHRLo/WfVq3/G6P1T+ORwRGWuGFY
+o9eqP9D9Be5On7gcUCpbuWwWqc/3ZEg3d69B/1Z2Cq6hmMm9pYmN1TG6Lq3IU+uueT0NEKHrE8BI
+14aKA7TTWmKyaOOcItbg6FQ+p716v9bpLpGD2juYtwz/5pZKV61zDojqvlXHd5yhIQncmcHffSWR
+J9/pNw0kTvuamdI5zkols3mZpMcn64O/dFtu+atp3arV4V2+0/NvlaY1fc+5iOOEmFtf1r17yzZ3
+VPtndWzOv7UaMuffXQWX+ObKqDS9tAIm8U16RF4O+oPG52jQa1mh09r5s+xdM1KFpRuCI9gjVaCa
+2xK1y4+i8gJIHudDXhl1epfoUXDuCvydsich9tRSA37GDQEl50sNc51vEiUGQajMwnN2Jrh5efct
+BzeM9sI1UdtzgHhA39+D0XdhpqKu9l7KyU1k++bNuqBWlrphtNdS6MAoLPcdzfW9cTBR5jqvAIMR
+Q8voWQG4019iAWtds716q3meThdHxILUpOjSU16e1hGNg/7kBo1EZ3hmqh+FCFW0m4ohNkelHi0Z
+C54rmtKVIdNmKbLNL17W/rNED6UaodO31Ulp3lf01JTJb079OmqdqtKp6JyrD6Hqt2WH0ILD6xVj
+LM1R4Us2RoN6baLUjc3MDuihrmqmdppNDtkc3hrW+pp7XJOx5btTJGGFmCcLHjv1cWHQqC3OAA/J
+wVGsCJWm9GcAXqOju/4NM2b7jYEerxX0B6TUQufSM00eHpHyHKRdOBANi+daheLik2L7Y7HxoWZO
+LcDpu53GDKz4ojmgF77M12Lgjik1Griz2jMX2UljC5oYyXL6/FyKZGDcJlbteAPHYmgnMfY/bGXy
+F42PnL/EJRM/qVefcHL9fhy955lmvBXz9smf8fPx4CP3Xpju5TyBJ8bUFji5qx8wXHcSSd5UcpVE
+bPgii49i79HlPQy95wZkMJgvPk6Wp7e+ZL/eHqvvHP/0kvn77PZodFzrn3bvvuqp98tSMhnssy/x
+E/ZOymw3p9lM+uz5hQwVOD4aeoUxv1MKnHxOeAKIy0sBygqAHNWTweHVRSIvj4+ls8P7cG7wKNy5
+vNnR8yOTecxVK7mj5FHDCp7jof9wCBOchdLcztF7JjxN3Cajz29VsTpki7nd0kNXna+R3M18DP1s
+snIxmeptLq/Smn/wT2Cci2kmfP15OBoJmQ7DiVvDxN1eeUfpzjLFWs4/2a1lgy9XBykxyG2p47wP
+EqNRfFwBeIPnDBv6iunIiqdu0i2XdyzlJnfc6+B7Vyy19gMRT9p/LRyWYpXA0Y34OXphxodhviBz
+geNTz64w5saXAM2dFD4YS6eC9BP/gj/9fqa5W83MT/o8erl8LpFJgcbmp4V3o6+R2Plr2HLS152r
+gu2kYid/6rWa1OUdjQ49vtGY9Y6s1jqWiuyzsMXF9q0mHe8FL0M2k0Y+fbW9apZM6vIurFXwPwcO
+uXbJctKt3KuwfTvsFqwmZXKpfMJqUpcXphW3d/oj/5E1goXqK5P7uCpbT3rqOdxlL94qlpOennEV
+Mime/UUEc4/HlXcyKbufrGfnd/V+9Dw9LuCk8cU99VX5py7rh0lDQX1SmEUhpQKTUtda3NszTRqJ
+9N6GdpO+jV4++xWbSRM1MZrbYV1e07QqKZ2839hNerbD++LP1pMeel7G25+tG9OkwGGUaUtp//HP
+Tq9gNWkg3o0d20wa+dw/eUxcW08qVKtMTmaugMas1rqVa0d3bnrctdWkTO7lJWczqbjt/e5fpk2T
+wizatDXmNPh+Zz3pKZPca/miVUv0TraDJ+qk1ZDPhN6TK+Ho2aWcVTb7/J2bW+vjIVOIhlic9HBh
+0rPWQLyphTiYlAmZV1p4eqyZJiWzqGuNfjdzr3aTZpjL/RfZetLzn1jia3R1YzlpOb7Hw6m0Xqu4
+nW+VecZm0qcQU37zb1lPmj9rXT09+n36pC6vYdq7vX7bdtLyZ+m9bjfpKXOXHx5aTw==
+
+
+ WuC9Lu9tLnF4ZLnWu+HFlu2kd2+nWxO7Sa+Z+5N8Rp8U1mKY9vI4+/ZaenmxnPTl+vvcdtKvaqSZ
+s5n0Gbgl8zLuhqzXevU17F3LEm856dt5qG876chbDnj0SVGKGc/qLZPt9C4sJ5WuQluexEsoC5Py
+YfOhmb5F39RJ67zfdGhcXv9jobZPpuX2jn1n82stMO/7sSROemyaFIb9+tGYvnhgnnQ82D1SJ52c
+BGBf5tfqea49+ZVJU1X2fJ4VBkfj22MPTppY5EnnIW2lh6xpUsBY/GxLVKY9YfMhEysMDoUrRdLw
+O7F0fn7SndGoVu/jpCnzSkfJ1kCj3hTQmFmUR75iqqQ5iZXCJgRvDVrvFUWmtmpv4jxIZ7e7r4OY
+1VMikSNn1RLbu7N7+5M5e/dObZ8C683s2jyFHdgNpL0qt2RaX62o6bkosW8a3ONvyfy0/7n1YPs0
+WjyPPetPF3Zf4vZv3m3flj5rr3u2T5Pc7mPD6qmqwxQC/RPO9u1C/fojbvv0eqtRP7N5Kp3tnh3e
+jjWMfez9yKa3bwMdTT39YLdi5qf1i3Lf9uldJvA90p8uYOzeWz/w2L59/5yJHdk+ffe+RnesnqoY
++5oUh2e2b3/fcamS7dPed+741e4poKoUj8wwtvj8ghOOH2yfNvr1csHu6a5n9/x53x5ju9nkZb1l
++/YFd7LF2j1Nergdf8wWY5EzJnu0r6065oubznSgUhqfqE/T4UPT08r76X7S+FQI3iBDKSnGXDq0
+nwbdcjJ8fUm3Pyvo1EseHctnO0hZ9z7VWj5pxGzMvvFD4u7jtpysVLz3hEUlK5dNIVsbPXkDqcH4
+Sm8Du7I2etwjfC7GSp4rwsw8+/k46wlmbu49wbvXsif41qx4fE/+Kf5WBBL8TntC+bfIolFYbSdL
+fFkCqNMBsE4H3+JOVP5AS3yf82h25YuUe5s81xLxIbuVuQhsR7Sl7faSg8wrkOm2vMXtHRWPM639
+rJecOzRnnjQsWvdzKT3R2pKX9yT9jmPpp6pjPzDD6js333o/l9e257730DNwHFHcpl0L2GLRG/8L
+xYg7fT7+RtHPe925rFGsRdxGod6gGHHvvB5ua/22e7n0x4V0cHnRisKf+9vJ6GOXV2xkPwjHj0OF
+Tpgx101Wkv0ccxER9hWyQfcHWMsRThe84lZVuMw+Nn4+DjpHdb/4KBbOVLs5ujuaCeB0cvBz60cO
+s7glft/JU3c5eGhLv9AAt5WrhY1eBVvwmFz+sGgCz3I3hKvMuxVwhFvq4FXfqMA73RFpgDstbT8a
+dH478KSzOWKxxV31ZjlwQGPK1l7l72jAy2ZvczPcZZLl4PcODFCqHnS2Y8G5CQKHZhqLGUBh9yKv
+mY9KhkeQBVzaob5SNnjLhvRJR1M+zVBMCjr//LREO15z0kBsMMnipEOCFoabJj7Tn8Kbui+gah4P
+M9lGsSJqbsX2NNuoth6UNo2P5zPnzSPQlHLTbjReui6ib5GbPb3B38AI/5bPAergdy59EiuTbTdY
+FuPA8XF2D6At7yOMYbLq46GvOVZdNfMORmWlbW83ebt9hFoBs5Usdz2jXFa6OVAHvWr8BI6LuwOY
+BYWZOPGxp+qLO82MojYDZKmDz1bGq/wAOriHwYqiam3BfLMtIcvIoJMhN7+MjMGrQJbhNfzAmWPv
+P8WYQbTOgfezEnDkVC4Fr86fWYFnAdy+LXC4FhW8MQ14hEIJVaojXkh2y53q42m7b7tg+HGjLFfx
+3VgsF4yrwvLlulbZjb2tNUlF5ckLu3Fa7CERt/EgbStcR7wgauyddCyf3hbBctr1kh/c3glzjoCc
+z4YqaZyvKELnpwzsCxhId5T7S0F8A3Y/9ZVjWDnyleATj6jB7fpmvosK04Rd9Xq1H8K+eiCJy2Au
+AhF7H43rsE3xEC0CXXSn7fT55zcI1LVxFYWoJz/++oDoCORSj/IF+i3nULgSAi042o0VR5udympw
+aMYyM3xNr8fRsgjNqY4RVSJb4+Q0v4sz31jufvb5emLaq8jwQC6a9oqwd5fXlsHPjXjnoRhR/VF7
+yCCCzmx3/zXL78Tzhbm92t6z3KtWMbyr7osFxk5ipcvNYCwToNzJXZfKD615w2sWHQX3Jvm6Okgu
+LwIVpgXKASSwWatWIFnISic8MU4gDQJHugpBWIFyXi6WgJcOPy3F2K6uihhPL3FeamC6vBbnt7xE
+I6lzCyLf+fSSfbE8vzkrxcpi43Xd6omMqAbW5sZzeZURT3zZPBUpGYTMpWzNI2G5CmOenTqiw5jO
+nU+yVv3mUG2giNrWJbcci3he5mhCXzq8PTmdLX2ojy1VdvcuTyvPX02GTT23M+Gb26Ae7iczw1C3
+I50nqbLSSiYtV2PnRnwYL5dxLu8cITrrWd/SZHW9zeVdOuJ0M5rgTIp9yx6qEY/q+/o5sKJa7HyK
+3v0LM082SXYa82JuXz63N70v8s6m90Wmsm5W2RdppMhSJ5UGjVCCVFXtOrXhtM1TXWt1eZeqXTRM
+St3u07uB7eYAT17nGN4tCJmlqHR5nY/hiK3t7J39BpUmHQaQSafBroLK+hilmKOWvbJhfmsSgzN7
+n2BnckxlXNKpsWe6GutAY7pqb6lscKmHT7PSaYUMl8HosN79yQmVNbn0aJowdkLFPuiM5zPdeP4t
+xqpbu5vB2PGYjvXMrKlFDV3RYYAcTsv9lSxHW5BWtpGtzQYEqTpcCSQlwmsNFBVfoQDpbUR19uct
+bDulun1moVQv8Y/NLOxyfD70dKMNe+hLRl89Ye5lXE+lP6Nnw0w+/5PSgjVk0q9zprlXyxJkuLz0
+RjjJFrIg55dx34EBuLwWODmzwcnX+Yp7pQHnMqd5auBNHNSSleSey8u9TLzUJGBlZpuWu2hk0/iU
+bHdjEtijBc5FsxuYg3C7qgfIaN3M8eQTX2ZixSDWJ75PbhZ7XUUu2nD58+UuNKOmREvOq7vQiAZr
+YyAiAokT7TcIJAxu5k9WtY97eyP8hL1YMGcoXWiWnt4LkxNtTe8LvxPz7ZC9Aj7m7ESjON0wYtgs
+m/XxFnbf8XT3LlZ3odlgbN6JtjbG5B9m8bys46/qXVC40Fy0QPG/caGpUR4FKDsn2sp4iphAAilG
+QfNzvpI5igezgcI561qmOqgpJ9eGIOJJrDixCyLmkc6zlB5FZ/89UOD2SttkoOR52hnmTT4um2NB
+ZTKTUwkjvkxTeZqDhj+WSxX+5DbmM+0V6JbWrnT/LuECdhjzbwpjFnJ4HcI+ufXyixHedRgAgPSx
+9/NgC9JcJNERKPNpowXJZO8jUAvi1tYba61Pz+2fxypiZUtZ1j5vC1MfyWc7btLQdT72ULY9uusE
+3k6LPTb7Mj416fxrBHPSALdg1o+s+RitzEXCPqDWLubtdEtZiTAe0YTWHE4voo0/uatc0u2+E9r8
+PmcPPM25I7Sx4M2jXd+8hwRWuPwQ0x5h3ES/brj9msb8C4FxC4pw0UpfMiJtlM48noHGLGIfrz9L
+Ylen5T6toHN5KUQd7n7lN+GmmY08B+MqLNPrwDJxPDgvjrFCpxEtnBqob/p1Xcflndd20sARYpTH
+giJ95OGWGCmEJ//2bIy/HRjcjJJpIyPAAFZXeHAtNioPwugQIaTkTrd4XjZhqyBIgUX/prpIrLBb
+gaVgrk1w9fXNPIomwlj0TK4lX+4GxFzZEI0FFnmN0S9AMiHnA8eOfBPR5hjlmQsbu+hNF8SibeAY
+xZL9hilnf6WIRxoenI9W2jU7fzLAvWn75eFuo1kEAKHJ8WCVRUB3crLPz2YHqi3aXN5l5A7bvREj
+BuULUMeiH3HN9Vkn8Gj1lSvwvjsr7+HaNLZW7p21WCYV3DiiTbThN7EGZGEBIpZdXqtMZmAuBUqc
+0IhlktO7Ce8hws3ScRh6sfz8s5JYdjl4IhBG4ddiWeEw9xsSywBSyEos28Qslh++2tblatlzth4S
+WN+mxPLzD3KYTfgRCbJsxbKuw6wqlq3yuezEMkpkLcePTiy/jZaI5ZiPnlvSiGUA7snJWG9Nbg8s
+rSS7wOrDg0Vm/9JsRf1sl+O2PPlttHG5/7BZuf82WkHu2/mr5rdb3KgljnlDNLa9YTw7Xx9usrMj
+ZEY7NA4/Jb7vfPZpMl2tvH5c6qGaJF4/l3cxMv9Q3azXD/OUdL+fDcGumEqKKoSZ9VhERqhSSY1k
+kXr43lq+k2pkhNqtCIDSOpUNbkXAmE1oGGGcmAP/zoqMJYtSzn6VXiLTkG59bFKvl2baL0tRQtwd
+OKrXKuXMPL3OZz/18OboZFhMTCdYnJf7qtjSdYpUrPMafEiWgw+D5E2/nk+FpMH1Ap5md2iZb8vi
+xm1PqF96c3mxejrrCSX5V0/oQs6qhdMXctUT/Pyq4I8wtuWw1DpN6q3xBonDZPm795Ft3J80cC1Z
+rMisZmrl40LOPzpD9+rOXi7zHdrCKmpB1ZSUAuviWaWYDYz5XV3Sikdf9fNsPZRYLLa9OrnR92pJ
+v+IBM1f3at+zFCtS9BtN38Mhq34u72LPGEsz81bu1XLExX7NA7q1bOW+KGce8lRrwQuyIlQjnoZk
+Qz+7StnROBYYG+4hsS/kFR4+C7P7CewKeQ+3fLaFvBizMGwJG6YAL3AY7904Aidub/+I02c98m5f
+Z/xEV6PdcyggV28GY3KDSoUCvN1C67PpXATdMgEH1qtlfftV6YECd0z26umUYmNd3rnCf3vwSmsX
+Ru8fHRhojLoeG6ux4ytN6vIa1o/3Da0zqeAvKpOqroXCQyKW89ZUGJRYktgflhOHnckDjn2bDew3
+w8lr9uQe2qZbJhVrSTgmNx052vu6OWCvwVsZTcXdnl0aRkbX6hwyh/cpyygX6hnnbT9DJNEYMLWv
+Gl1wp9AAZ2clFXcXsOxcqGILHHKYhYKt3yTwZywMroy5sn4Fk6u4R12XQ1fDu6gTrkYq8xHe4u6A
+LkccmB5dyXJghXxLGuKjrUyZVwjtq74tAtoOCCT5lsuqvqkSkp0QiLOoKFyIBv7igJgSy5ZU2C1B
+oBVHqwb7dhwtq9wISmGp0nG0atCSMa/ugX/Nru6gUSq57OLtMOJGEsu03c8+Vx3sXCofZTVkmYq3
+DsZWj8lYZ9pjIIXWs+NYCQ1HeANRUQSJMvJOA5RTloS9V8geY/YRiOX2sNXpVXZfO791bmB3fnO/
+Ob0WOSR1jio9nDqMUue3qHMUKUq3csSvZ3Xq1PtgLTyFzj7mWo62It5lsXTHCh7QtxM2FTzNU72C
+Z3nNCH3NqWNRhjqUGk2gKpSkUist9TbLvL5Tytt6qEs5qXXL+XNgX1tsWcA4x5NpzIu5fVmUPr/e
+F+dLgFbdFzqVdaV9obsJaJVqZXPYCj0kv7mcCauVnSuZXKsdQ0rl1YzK2W3zVoeG7k4gClSqOgwi
+0zH6uCoq9Zqm5TWJKxvmk+MfKzGo172aBeH6hvnk2CwG7Whsptpb00H7bCWTY3anyg==
+
+
+ wu6fUTK4oKJdvHOv77ZHU8OYhfm8tvE8OTGL+bUxRjK1N4IxOtaj62N2xDDGU7kop5dYjvYgrWwj
+2wK1GBCkAsngUZwBRcVXKEDSbbblZ3/ewrYJUGKQaSFlxto/ZrKwna65GX7YX3PzMm6bkxhcXmcj
+fEkRNOU2uSjLZH/MVudKwJki71/ny1NNV1U/YTxUc2jvhXOq3+JeJj77GxbsfUpLarRXYS5OudZY
+tLyOB8jCulF48vlyBrH6ck1aiOXtQBZycUnJMoU8cy0e8SUIdDjitgi01GDPraozV0TgnO7h8qrV
+mezF2M4Iv/i1C22+sp7NL5gf69X1Utw/ttLphhGdXWgu+urMnRhrvuJgreonwJhDSRZ9JTR93oVT
+2TF1FcbyGw6xEnoThV0uLwL1+xxUFSQbF9oKt50Y9+9iungVwpJct1m2rVOe1oN9EBFLQilreaj8
+9/k1k5mNGRFaES1Lk51EfRXCyW10b+Gum5XuEzVV5tpehbBaLU9+zTxmK4x5Hd2vlJXQs6sQDBHe
+Ncuzac6ai648+5cpzKq9j0DRJIFSpoDmrSNWK2bSWSYuF3u2GjreBV17o6rGpzu4WFMaNitda90S
+gHCvFLYy1FjZlomWf51XvFApvJHbgBFtiSnt7juhjTZ25aIqX/5tPZGijZNiY+p7ih0rvReM7LVp
+bKWbEVzOhb44In2Zr6U0V2ZZLPT9avlsv4zANHePaOr4dEE3k/u2NxB8tRwvTHYMNyla3wxGjr7e
+XB/Rtn4dxjugvrfHdkSr+vWRla4zu90US1QXfFhWx4IqfQTFpCFErHGY9eqMaS9ypo6MYLVrYbqm
+wmNTKbwYa1mzuJffzK1NpHh5wb9pnWlPU77sfAWU7fpUzq+XLzuWKlBXeoc3R2M2gWNT2NgQ5XHO
+08eqb6c6TMtUApRijiUmoK8cH9sEjkmBqpPPwbVCxOO0Olxz18z+5PRK30Ogqv/Y++E2mUWQts3d
+mcsioDo51eGiR3Gte+HSK30UwbF4+W5Aa/E5rW9Td0Mpld4L3sO1acz5ywj0lgwZj13re0mOYnkS
+WHYXNGiFmxTLYCjSaxfLqeieQizPqjgpxXJt640yZ84olpdVCm9GLAPaIpu5S40ULy8Ry6abJ53K
+l9cUywseElK+vCGxXNu63NDNkwRZTmIZ7f3VKj8BbSuLZWqPYnFZPhcpZF0ill1GK4pKLL+NVq/7
+tF7LfC3watmKVnWfCzwZetZpvlpEL/djPmGjch8g/N6hlfsUt35jzfcKdZ8UlvjbiD6J16buU/X1
+kfp+2spP6rrPvaM71vnsr5DpOuf1q49NXr85ywJLWTfo9eNSD82p453DK6aSYuG3zXUFhsiI/YUF
+NmRRH9O6Falvn6tu+va5+pjarUhzXUE6HF3h7NOVLK9834X9Jq96XQHF2Qfq/+11BarcV8SWzhuO
+xRKfvBkkaqluNN87DDCZV4tjMftQ9eInqX03O1GsmC5jxXTB5fWEpNCb5Yeq9ytJcc0PVZs+U+3y
+/pEPVZs+U004/+Y/VG3q5/L+kQ9Vmz5TvXwta3+o2nYtG/1Qtekz1XgTxR/4ULXVl743/6FqE3Au
+7x/5UHVg/jPVsJY/8aFqE3DEB7v5D1WbPlOt1b5t+EPVps9UY5baH/hQtWlS/Dr2H/hQNcJg+Ez1
+zKuw2Q9Vz0sfowd+kx+qXjVz2KGM0uZD1RaRRINm88sPVdsBZ7aSaD9UTVtAPqar4V3vQ9Wm8Rbv
+6nQ0uWg+VL1SDS/dh6qdSUVZC/WHqqlLluc/U22fb0lLfJYfqnbOt/zth6otEGj7pe8Vk8eXIxDv
+7KK6LJP2gAysvrFjVWFHjcAF14nTLQEOZu+y8uwNR3lsyrMp/HYLX5Te4P15enE27dcZnDJLlxdn
+r+KDtSnPXgdjm7ky11Sc/ZuoqFqevYGsG4rybAqQyL78rjybojjbDmNrOq1sirO1L0pv8nKFxeJs
+my8ZrVKeTZ2j+KvybAqPmm2Uh748m6I4Wz+Va5dnU3A527XQl2dTf7X8V+XZFptoLs6212FWGNGx
+dtFKiq1Ynm2gWrvi7CX7QluevcK+/KI82xKL87GGjeyLo/a74l2dVuXZv/8CO015NoWyoX+Vae3y
+bIribGM04beV7vbF2evdaj5Xnk2BSrv85BXKsymKs1eOii6WZ1OUGlvl9a1Ynk1RnO1wLxxNeTZF
+cfZ81s1a5dlrY2zFCkrH4myn80JRdkwhpV2UQK1YfWkCaZZtu3559iJIFnnjvy7Ppqys/2V5tnNx
+tjHXGtfaMicOUq/U6uad2bezre7oNn49m75Wfdm3s6m+J05dNm7HmEw1VrTgrfjtbKdM+818O1uX
+yNZfz157N+a+nU19k96vvp1tpcEuq6OmUmkWlmv7bfRPuotcHAvRSRU1sffX8Out9u1sy7s6qRFI
+p8jQ36vwuVAZR319CahDBj9//s9VjNvc1LrhinEKL9wGKsYXa0X/RMW4PcY2WTG+gRsOKSrGaW84
+/F3FuDHn6s9VjNN80eD3FeMuh4SjzVSML2YQ/YmK8VmFnWWx8aYqxvVK4SjlQVunYnzdb9itVjG+
+HGObqhjH/OT1a6doK8bNsdc/UzFuWVm/8Ypx+rsIflMxPl+V9qcqxpfljm6uYnyluwfXrhi3/VrW
+RivGN1OX5FQxvkJd0i8qxhdy4P9IxfgGaIyiYtxFL31/UTE+R2N/rGJ8lW/Wr18xbvPN+g1XjJMb
+QTna6Oq6FeMu7+I3zzdfMb6hGiuHinEDJdOXpq1cMa74+uxUnk1VjCvaBb8ptNmUpq1e97pOxbi1
+72LTFeObo7HFWPbi3YMrlqatWDHuWsl0Wbdi3Hxn15+pGLe/qXWTFeOz6qc96vvX1qgY/81dN/QV
+4y6KD17/XtnQvlpOUdLyi4pxu+/ybLZifDmNLVaMr1rfPXc7kOVHHzZXMY7f4LbKl95sxbjyjdTf
+524trxg3c5g/UzHucvZEbKBifMZh2C3ar5KuUTG+5t1QK1aML/GQbLBiHLTxWc34H6kYJ2LZ/gsg
+m6wY178AssK3gleuGKeIjGygYtzCSvoDFeNk923LiTdVMW6oeqZ1WK9RMb7eDYerVoyvZImvXTFu
+cUfEH6gYJxVDd5v8NtKc10+tGHd5rT9xv9mKcVjLrGb8z1WMW0ZGNl4xrkdGqN2Ka1SMk7w+20/c
+b6pifHb20+Hon6sYd8i031DF+Er3j61dMW5z/9jyivFFPC2pGMfacPwG95+qDtdrw+Hs/7HqcL0f
+YuxPVYfr/VzeP1cdvnwtm6oO1/u5vH+uOlwvtl380vfmqsP12nC9amDz1eE6cHNfYd5wdThdZf1v
+q8NNlfV/qDrcsbJ+I9Xhepk26Px/rDpcrw3X5MufqA5XRUK3PQWM/bHqcF0xVK2kP1IdbpcDv9nq
+cJMO84eqw80+pT9THb65L+Utqw5fo15sjerwpV8v3Vh1uF4bvkZOL3V1uL5cy69mbKg63CKj+w9U
+h1tmdG+8OlwPYzvUWfyqOtzKStpYdbiGO6s6iz9QHa4jw+VIT+tXhy/U8P6R6nC6/LHfVocbswj+
+XHX4YtXzn6gOX5ajuLnqcKcI72aqw/XacIds219Vh9thbLPV4XptOE3m8LrV4TbZgxuuDtdlvVrN
+8Ueqw3VEm+5V2Gh1uJ6M5PL+uepw27VstDpcrw0309gmq8PtdZhNVodbSbHNV4cv2ZcNVofrteGb
+3Re7T3f/Yl9W+HT3Eovv19Xh+mZb6Pwbqw7XNxtj4n+qOtypinMz1eFzttgfqw6nuleB+SgIz0tR
+afAbqAs3xpENCRIur5Yi0WvZf8A39fC6+gdAz23PfvtsU4W8lLdq6NLeUsOD9X1TfQH4nXtFz1Wn
++MA6kFLq4cd8K/ZKpZwLGFuxlNMOY7T3XThjbPHm3xXu7Jpbmq0JvxJIJJL4RpWO5Py9dFtmZZ/X
+Z4unFYtI56xXE1Br3OJmF+giX2Cnrfek0PlxpQu5O7jSOZ3fwlK31/RPfJmRnaZ/brLTf/0V5uxC
+GZoN56er9l3L6Wh7EziAt2AU/8bpCON5V/gyi6PT8dzW6bg8D9Z+N/ZWOjQOVtL5eldSLqust0gJ
++90nwGcC0eXdxM0Jnwvp7fMItPkO7xIELknctkWgrQ6DxetOyWHUCMRZsHjdyZ5QcWchIS0yRsft
+JbVv/I48pKlsoPPB9i6sdn+NrMCLjX/172KzXzQALrFwsNcrfdbzvX+LMccP/tH5LbF6ekPfSL0g
+Gd+/zxsnIFmkelvd1EqBJ0c/03zKnlLLY5eihcXrv/w86sw7Olfsxp9UJhkb79Iwv2aWt7UPlj+5
+DZhvgFlnm2IlLSrqlFNHK95jJftjtsaN0/nVE7xtMXbk3wjGPFq92C8TqfMUSWR0X/xEoH6T222I
+8eWtfBtr4skUNVoe5XFS8rF0nSYd0LV6gcZwScIClsZaHNy1b5zGuBB1kY/L61RTTCdzl0vcue8j
+n73HzO6W9S+KwNJ17fQaIrxrfWm39kZzwYOLshSbSvDakrj+FWasW9/EbRFK1fr8EV73Vg1StR7c
+HI2tKn2tZK9uv5AR69Q0tkLyeLmPPNnGj4iOHqoybmdBp+9+uW97HdLqYWyEcF9nmY66pWFEuzIP
+MuLSa3VcXooRLWtT95ORI7simFtLD8n6sVAQkxTizUVzNgDuHA3x2TruF+ssgAHQ3j1DVZu6nywu
+3j24VvnY3WB5berc7juWYu+vaT6Z/MmEOjZTm4rl15qz9LfyBavWnWtTaWksvpAgYXYiLctAsPlm
+vQXfNDtCKArlZoFxwpO1ezoAj/u2yaJs9jlNYxRa+Rws13K30lVZSyuKKb9dSx01A/N3o3fcIYyr
+3fdg/33ku5Xuy1peiK1V1/76kga7FCVLi8/5S+freB+svl+JdetrXZplhSyrexStXKSUH8PEEe3C
+H1Y0tsKVEbWt0xM7sXyvi2UHbkkplp9/lovlFeRLbeuBxqtpJZZt7iGB3ac9dzRimdS91jfgc0G0
+2Yrlxd13/Hg3taavHz1Lnny/MbGM5dcgljdwi6ZStb5ULK9EY5eOFzzYiOVl36zfnFhe8Chi2DVo
+K5YBxlsa08wklu3X8uAslqkrV3Ur6W3kqFgtfPPcuX6d27TcfxttWO7HfLQXSnjnIolLyuv7v7xq
+cd4Sf1jBEaKOaIs7kxuEourZWUxi/brz2aepYLfw+r15lnn96oaPECy3xOm8fh/psIONiH4YmysX
+lpU0fzpduDCfgeuiuNOg+mu34sI9ilY5Sb9wK1Yt8y3Xvn2YlK7TS2S6z50fUKvXWi2PjdiyTC1a
+48KF+bNfpfHzr2JN6kIL8y0LQthebL2M2w7Xg6nLWPZdiHnr9TZ2YDsfRcTcdr7ZjTqqxxHxWKhk
+6weNXrLfCA2Ske700iQDyFSpbktkEoff18+5/d1rjbk0kruZj6GfTebvHwuzfQYrSQ==
+
+
+ r7xXT5G5+/uV3l3vrNRqqTgpXKe6kodNX92XWrnD7HMY1nfvy/lLXDLxk3r1YWWKYg7MWk8aORyx
+mIhXSlOsjz6TQp7dafY+de+ZP1zFTCNWa2Yb79niaMSNk5799qh0EPLGdvn7y0gyIgbGn+cHg2nN
+5d07a0ny/snTzuOW53zi9yRzNwdb1VcxtlO+3854v/vlwl7rcxgSy4Wft+h3s9BOfL9ffeZbZVm+
+ej77uSuzw/xH+bPU6d6eHlxO795O/b63t3TA/1WNfF33ioH4h8s7DDwmJiNv2bc3GvE7nq1Ba3Dg
+ZXY+4/7HQuMuIAcufcc/O71CjHu/OUoyh4dbo9FJrOjZfzm99HCp624g3hASTI45OWZylfscc7o9
+uGJOr68+R6POSWg0/TwGbjneC17Vw3xBjiXL2+09UkIO63vOhqKF3S8pepLOp7rRUoAUb8NKKxWA
+odUMWFy4YJHnoOyky2t55YK/05U9ga5Qwul5nXRjXG2vlDgMnQlKQfte6ufGGsddVih/3u78jBJ9
+8crl9dxf5QMOKJq+h3f2d70PxR0p3k15i+XTi7338vmRIO9eirCqlCdZOaifYIF8JXB0ELpH4KKJ
++MtrN3Ph852Qr2NXS0z2Lvo2Grcvthmu9LydjL4kWpnz3slDIjZ8OTR58oFHXv5kg9I4LBcvSp3Z
+6TXQOciFYlo/FC6vdixeLnXxznDdyWH6U7yuwl6NX5OwF/dz4zx5rcY2433/JTf1BD+/HvC+i7vX
+rCd4ef/g8YVqW3jLxQX+iHtCSb7oCR3svuI2HXtC/dKzJ9AIy4iOSPKm8ryXrTPxKBk7es8zTXLz
+Bfkt3notfgL3vffBqrYP8Tbgs4+XTGs0CiZ7g8IYVnX/g23NXDrl2Up8bSe76U7tgGWY8ftupn79
+dpWUgsNBIHv3cAadH7ZgvsA7ov+ceztrBhn2ddub6l2/SLl0clpLDMdsXfvi57HYCGYbje39RPzi
+G459Pj8hRhPDTSfbidF2c5QKSd0rht3zt5Plxt40WdqX7pKDQbiAiuqOWM3384nYdfor+x5qTxKH
+J4I3kyrcNXAtUZc39/52PUxWMo8ckHvwKPPBVPFaD5kla8U/3xOHomeEx8I/a+sd+hOFcqrb3wvh
+YLe4k5HU90/Mmyold8SUMAk85XyDdzbzEXq6Jpz/XQCiak5wnGrm4+U+muomujyOSOJBnvTnU2Ma
+uwzwT0gHeQI8kFfoIpe9vJNynuBNLvfmf8qLk+FrEfbqJAiAeHynk7dhHVb1ICBPvpgGEvGCB+/V
+3d/O5PNnUXh7Ozw3jm9P25zMCBc+zqVboaeUEOn7CQloe/rgTX+Gzptn22FvVN9nPPvv51sAfI8N
+ZILeac53dn4eu0pNnzLn54ldvS3e5qrfqbPb/o8yHzethmCRzS29i/gofj0lbz7ao8zHwc5btrH9
+fUKmgrUAAP5c9uc5ltv3BwPiduyhnG0ED0Nzi7ziYNJUn7iOdBhT35c3B0AHzyO8iyBNeFvmI3Uv
+5TKRRw4IqVrIZTk/6DAGdHDbb98JPnXwpfzJtqMDgDa9bVhQ/vF0YAD+KPdzRnYNtuSplBhNc3tA
+DNU7hvdsSZnw9WeGbCLoYx+9+E6y5Km2YRnRi8zF+3gX5N3RC8MFW92UmLj/IfKVYQfVLrCmh0ny
+mg2V1c1pDktkf9UuqXorcfdxew8Mda+QKlVPGYIMQmMfsIM3vXLu+azQSl6nU9VM/txzt/CgzVyQ
+033kCwXfxWrhNpF7be1UM+fdwFXmYzA6VhgXHy/vptqPpbv4x7SYRsJ9hrOPh1PRrggLm3U68k25
+99PDoa+We/fHMhhuu1ZhfNr/zgY6jxNxO339tgCS2JzAvpzswMjnfTwvd2Qtzy9HL/nsQaYd8tWT
+khgN5zLVShDQFn1iuEk8KRe97Yf4RapxnzsZnxZz73fVJChTFQGPVCpZDu1cpi+P+mmVWzQK41Sp
+dH2bavSnr+q+SP32M5+tlx5QF8yHxRPx4TSdvREmKgnkq9108z54n/kojd+QCd/msuxoJxOs/eAK
+HkOZg9rhbqzd37sFuCK+TGt8Iqi48wgyUYJAt+S5wiT3FryLoRpbMpoNVr4prnAPxBmXcP+KtDOD
+fLGYe+WZc+nPaF710CJHAz6dq6AElMXbI7wVMHm7G38nnfAukXt85yLV9VYq6XZ77AG4LyUET8o2
+Iu/+6F23cKqfl+hd6akCP3q13OHp0ylhZqQtdtWOd2KdV+kDHrCwFvVAAgCZVmfwdOo9ff7K1ivZ
+iD4YcLTUrfhQG96R7UbiLGdaD35+9ud76ps78mhC5GwPr35pprrhmwBYQS9+QmPZXaB5IZvztU5e
+koPP633VAtMfNL+esrVaRD6Wz7mBgtnLs7vvxOi0B/qD/7WUCd80OPJ0XudPI59+gbW0PytvoFsn
+jyx02ZjBLQ5MagtY6+1OIj7oVVPXk9o43op5+4oFdj4efOTeC9M9PUtAb5vd1nj80yNX1YDiGN2L
+7Q44ARTjn7vEwWQ/E5AjwiH8dniROBgPT+DB5UVmWitew4Ojk5y8c9NMv1xsnxEFK3oX2rrMvV/u
+RlWn4zAJVtL8Mb0GkLlptvF4RITjDUixwxGezw7uwTnoAjxPfBd44ivkyEXjjYeQqV82sC9+iEdf
+9fNsPZQ4V7I7duIfZweV5DUzvERCO1dE+bTH12HPfyrkphhyKxdwgYc0UWjhnAs+YKg/DaJsHIbe
+cwP99i5JHhx8JMuT4TSZf/RLsBYkP0PrTf/7OVvf3X87O3rm7xV1+PrH30hdT/d8yMzOMh+vW99n
+2zenYeDyz/d4MdBPznfx5QO0DBh1qGmJUCAcXCZ44PKysOXHMJjMAQNsbwMf37uA/f3ZBUWm6kve
+dIf72cb3jwwaUDKEU3WIiILDEHwE9p/YIlRCrhc68t8HOgQtZLnECsTPI4XVbFv29DWMBS/ZrVw2
+44+aepqdFWyl4wOQmE9QjbY+U6FYZkdhlLMfYBS2PDDAzVaydNX6grMvtKeNeRLA+wKkQeZi/2kH
+hmgNDVpfIwVSG9EvC29PN4fBx8xzLhMUAwb5eXJzeJ/z7b50svVyfpoNFMJKpXDKm8mn3vncc3On
+TXYf21hgAPEJKMHXHrmbazzHW7f+TqrxszVSucXO1jjnL3ZigePo3Vn6/Tu1n2m9Tx9zb5PPbiKW
+89ZmD7ZcXmApL8cKD3kU28+gj+UN2gxYP2I0l+kGFUGIBzslTvKTo9xb98CTiGXjxaQcz4e03Q0O
+QPdoT3PJXiyo3X7Uvp73Wq9iNhivwQvtJMb+h61M/uLxPc3e9sY5z345pD/AL0tefLRhzyPRlBhk
+H3DEi9Q3W2tkcs+X7Wzg8/URT+A78TilO1/iAehM99PoiD/rpAqPgwc4i7FnEOSfO8Ajr4RE7Opb
+Tl0Xhx1QaWK78tfI8+TyqqSksLAPJtXtDUPK0dUV7MdGixmNjg6wyzZoLh95llC8PphisOxGBvr1
+WFWQcjdbOX+1OAEau06HjomCiRufRMM9hBYKo8O9ON8ooHuzjnzdeAfw2fYkfpLbicRhsNkkl34R
+X8H2jzi9dHkNyuTifEXDDVx2OFHuvkrvnGRtVwq7r6z1kbuwWqvFzNuOKx3sm1ZK/DBWawXb3pva
+ySxdaYl2pWBX8udPPaPF0GyXTLhlcw+n7MztlIpx9YMO2mw1NCC+iDwj/EB7UM+bpB2efXgeb3u8
+X9lG9Z1LdS8OemAWHkfQ45jCjwsUcu+xgZDzyaI/GwoMhrqNddAJxvAsPsqJ+5J3y/Ld1w+s5AJG
+ko/GOunMJ+G1KPJ9yDyD8Y/g6DHdvLu/VC3e42wQDTcZTIlTwGKd2cl8fJT4mR3rz4TD58E4c/Lh
+gS4Hr7psdnnl67v2de71eaAIodgV030Tpzf8Pdj7500Ypxgh3hC8bxF08OHTa/K6cPaIqn0p984l
+IwqNHcZ7Nwx3dj3NnE6irVQkE7rTnwLG4o3rS5BExQFIIrkGnLgxVuAhasD0nTXc9mcECeSnPUhP
+I5CzM5BA5zcDlRmXbYEKxLu3V6uDhLtf3O3ZAKXcI3lli6f52wqvwIZ6207ExqEBbvxZNnA1qIBh
+cwUWX7LYK7dz6cZNGv0+j3jkuHTnKBWwnPSmx71qzuLMOHMR2N9OCfdcCk1PJlke98tAVAfTufUl
+eCLF/FOQKhcPZNq5Sf3PhnNnNAA7JQWpuWSmYYlyBanntQcyKdiVxmljrPVOT45/aHd6YVKuXTJE
+RgxoxS8bF3S0Lq7PFqkwaeJ+v0ZAgmMWfCVP0T+mPce7Sp8VoEr78Wcr8rICCXSh70s7kF4JSGhZ
+2AGFmDABpT/FOzhfaEGC86IDdVKZXC0Hak2QXN6VgNJBwrinn5YdWZz9ZQxpTXZEfH3V4UrUbzpy
+6oGc5J4tJ8XjiDT2ctFWVNq5jajaHMiX2rJzDgfO4pRjnpI6LF7IKh/j7jcsJn3Qd9+O5LoWrOcE
+bwS6ACm2ucNne/RA66Mlqo90OLQmm4Hd/xMCBUjqc6qTlI0UW0JUR5z1sMVne0rV1rJkWDs+XXz7
+oT0AQGP00LbGtsMyuZR4bQuryzveyrUZm2EHnvWPK8A6O654e7bNgV31uL63bY8rruX0LLVMLFf7
+NsM23myHBQR9GbgAcpiFYV/smMuLDdWW+9YnrCAc6XFkI0fgT24LBQt0vNpsXXVgqSkFC4G4znDI
+rebKBAkuVWXPLSZozaLHX9n6wQfGNkqvROlW3kD/fOr7MjQBdf/5PtvYFncUV/j1q3hMwhHogVfM
+WX6XuInU3y4+vtEPc8MGvqN7DJtP9k4fTo7qSeb4oqc5Z6Gtuu9ppD+fUt6Z77+L8ZwfLb7kF4l3
+BTO7NL8QrL8bRhfNceajUsJgzuN++uPos4iGu+KwP6yL8X7q23fzEW/tiUXcqyd84wIMlrO+4myC
+P6VZXOgZzDrf9uyrGaL/Z2YbfQEXzDJKqIfkTighsVz1VQkVsPnvSS7BXNwCHsKP6p97mXsllKV4
+/LEtefotkKgRWuJq3OgcgxhcsnJ3GwC6ewkYbRowOQ5Pu8fVbH1wFkoWm/GmIVjF+/vbYMfd7mTO
+u7e3JscnCQShlcTEo5pDNzhGk8urhE8OQ/et1Hfha6T4B+eCObXk7e7hMWz33fViQOm+q9u2JCKF
+33ycj0lxZ+mhQiL5armv7fTkSwmu5E9+BD3yg9vZSXde3zit7TEOW7LvnwWw9mHNzD5Sss/vM8TF
+Lr62f8haovf8Yc04PYnHPo2F1PfeaU4z631eY6ArffyilmvNXmPzVZT775feLkasRMXi67xe9IHG
+RiLG6bbk72QW0ObnZzHTBw8cvvxohp2JEj0ddRp+DdZ7KfHA+MPan7tg7+d8ecaLzulLOHK1XYUY
+mrvBfG6fO+a0bXyU0Oru5N738i9wAo+2SWQE3ZgZA0sBGkqA/f3QS1Yus3l9c1xezQ==
+
+
+ /+uVsVMcWj1fydIVaJkY6tHRMYsgyXgOCkrwCO24+QfFRLx3nDYEfV74bBdsZOKA04JCxEFV1UJG
+4ihRTudvQA/xn5MoHjpBJQw4PGldUl9JqfH4kDl4KEWVcNosGAXblPlIxJ+TF4Qnm4GKYrToKNmv
+196V84K35xzujVvtrG/rrp3JeT8u5gNKF+J9zz9IDobDekqYpkqmiJTCYT5zJ+Pnu8Dx9uE2vnMG
+mA/siNssc39wWf5GHfVkB/Sj/SfVEfJ+fgyc6mRsiFx2vZWSIZQzH4QBi6/16v8A7SqHmTPbEvqg
+B7MY0d3Z9s1RHInhEihmb0LcEYpD15wHqmVuzYIs1/qkuJa5aTc+Kbt3gRbfee27uBjb8l9IJVk6
+BS7YqpDAuPoOCcaNIoVUKB6PEe89MArvNF0YTK4RzKF2Srhp+nN6U8HARA45jMLCSGvvK1lJ336Q
+ZcyOoV8JtxWfLp6zb8PmF9DiVkQbjASC2Ex2J/R5z3Ah3yRZDHUraswf/yxdle8wMuJvXish++/W
+C4xTYGup7vd5WQvjA51PfOHLxfi++kDc/vGUT4c7hyL63bcQqYVovHF7Q4QWSfZAWQm41aJFC6I1
+1u6nSing0lupwmMpqbJWRbqeMBhFD6NQ68/kx2Gq+yzHCAx6nGYWf+metnOJduJZOQJkG9lU/dMU
+0VHjNPL4hHwyQOmH9/wnfhKjQ+IdVN+VO57sXn+3BCCxTy6vOTfk+DTvI9GLROzB10lxX2E1Jq70
+C4Z7Sngk3SjHzCGTdGtag+mTLVX3eKgWsvVws4VWUqe9rTiWQDiO1SDN6O5UTZBIpTygMBwntFCP
+b5cczePdcqwTOK4OFE1BCfoQl+xD7eeC8Omzo9c7hhAX0cf0AI/gzZxWE/Vk/8QzyJw/idtKyi1/
+6BOSkebpbeLno91XL/h6mISVQodOMBZAPWqQrNzv7GffxWHD0M/iTntxB4DK/aAH/gsTaUZqoHP2
+A0OQmon31MzWvc26iQQQTxktEUqVj2QtO3u5zHfw9Oj+I51guO3vj6z/tdYGPaMyzj62Jruq0Nv7
+8CYOI18dZMcvChcAZCW1lL5sH/NdSMpQEiQJxyditUI/9fl+iXZlJ/n8nq2XqjPZpgV97t+PK6nu
+Vj9HojyyeOpvYDgGtbCHDHkQPbwX3zDtpYMh8lI2WPk4MMCFn6AA6v0Za7qlwj7k5Hvi8CwdxsHi
+amhY3d9YshxMgLLRqUxIsgtqzJdaduT4v49dAsMKbiHKiu6Dm2m3NboeddqdvjvoirsOkucse9tv
+DnKjVqvS+s8kM2hMe63+xB1zHyTL6fNzCfhrY9BsQXfvXDyn8aFnOuppV7QxX8sg/aPYe3R5SehT
+zeES42PMMPWBrGuPF6LEx7X+affuq556vywlk8E++xI/Ye+kzHZzms2kz55ftCjq0FyxBKLIGZQV
+AAHdPji8ukjk5fGxdHZ4H84NHgVgrNnR8yOTecxVK7mj5FHDCh6NISo6z9dKkfOZwFseORfqB6ks
+d5YgQfPEx23lKnkmvl9RRc5Re1dVBEWT7/a30KR4UyLit6+5GvD8pytDogS2SZXn1H3qe1eaaCcE
+j+VXp6bwx5kQ1APgbLDdPlaYkS9br3QOM/n84d68CVMAtb8XxByeoprIo6RHvEQTsWtfCznJKVE0
+NTWz9pT6zpwxKg9nMi8khIRhp/RTCxihvK9EX0h8ngTkhffQi/IlF9x4NVyvpRLqOVN6WyzPHhzo
+gRwlf6ReOdxGsRp8ieTejpM1+4w5e6PncXAJyziVVaEU8vWUPKrKxVRWRYh8+ePyJkaNMFGkJ9lm
+7LhnYbj00UwMn748+2LpVrl4OxtnlohmCAKWrYwjlzd2WSudKOaBvtP3l8NzAvycDXSHcfeTH2Nb
+z7eX8zWeZ+zyBZTP4uOBIeqO6QioVPWOMDmvWwWB+CIbktfQqkp1Wyk20bseltQw3selrKf7YZxw
+V8lHNybtFB7A0mC+CWtE5OfwEz6RgYRZmSJIxZNbEA3j4JzhkhxlznOPW9qfhwB3/uHDuKDGjxfU
+ndeQJky07M3rglgiGYGouIeeMOVd+diaoOkWJGW20Mrkdv2lVOSuNNEyygw+EYwEHqN0vP/J+c4f
+bmabc6mmuoYS6J5gdmD3MTdAswwq9Rk6QpqZ4XlDFfBmMauNPDg6U3TDxWS5C80weQ7PJeeh7UOU
+Lu1oPj5ye8e+M2OXe/kj0w7kaxa2y2G2cfyyDasPPphAArFaehx2zGL+ZVwvgfWSDYPpIbfErdxb
+CbpIrOZveX45er5KH+WSjXYDU+Su0vxR5ZjYuEoCByba6VYMWct9kFhBhgQ7dvBzBiRXJCSSydQu
+Lm4T8ZPpZE4rP79Pd46OYwoTBu39OxEvT4qpkPQVSHXD7f1ksfFRQLjK5FNkzcfsY/MCY7Avx5ge
+gihq+NKd8SFL6iTmy2FN18KkNPPg+9p2UnSmzE3760nF41vhKskcTscqHzt4BEpW0unZg+3xYeA2
+PlI6oXZE3lET4zBZbhZZVlMAX/NZ4xFXbKDgI1ZonKksDNtaA6EBp3LBelET8UwJduoJROvlOtXL
+qZuMVsDgIvui/4kZna3UWWX7Ffc0jSkfQWK0n2DKSLo3S7W7RLfLQ7J/tv8zy+vSH1zMvvU10JBa
+64FmXPlBsVVNxCs3Y+Xp3AUcqyfMcIUK+t0+QUQNt+OtyvsNCNtaz1yaUrmYTGdyXy9YUT7seDHF
+xN3D0Yib7Hr8h1eCJ3Swd4cp9BnPTkY6nGXUn+CDC0/wZ3iND04wwb7pCV4+nHn2f7ZHsC+XLyYX
+J70RtroJhqkzqxphq5tgcF5WNsJWN8HURJCVjLDVTTDtoodVjLDVTTDislnRCFvdBMOSjFWNsNVN
+MCUpfzUjbHUTzOVdNMK0mljiifZXR6TqoZ87zDVZs0Kv2AbG4rezTMszDOIZaiTuKue1XFYqtZRy
+39zsURv3PEw+5KoU3UrcbS5ZnmyVcZObWPNxrBTKGzKq2qXXWXrdrVVaHGoXmL71Vpm8ZANjfnfG
+wpZngiUcM8Eau0ZbbHnWG36is7Q0E+yOIhNMS2jzTHzj5ZlgzPlzMKxFkpalCk7rxR/TSkHuO2e9
+2a50a+v45HTpSm/nPnW5NOuNyR5eZx1W2tqKHNiuVNt9ZRmpg0untMiz3TNjcdjJaSATDouPxGhQ
+5JlS/aA+uCfSjhTkaPJOed7bAuMk86Vkus1y2fb53fgTO59e92Wwqy4i4bieJ2d61+VV3gbl9gvs
+pdhuLlnqjWcxpQZ7+tpmQOa8jlDNO8/6b8/HimoL6ucNBu5bWAHYIlFivZgJU+7ec8kn1gPyI/WK
+7lq9sH2+NsY+2sy1S7TRZhJrNiVOhUNrRZtfLpcHwNHe/2XGCgVIJPBgCMlerRnsXxLqrwZBVm48
+L6+2dXpuymExpM44pUYZP1JtMPvSy/PyDGlAq+TldW9WT3UgsnJZvgdGnH6dFApr2VwWFl6BPbYC
+yeWlShb8ZQ6P8ZpCI1Cx4mTt/MVFkDBM+/vEorvBcna0/OwvMKQ12ZHp7L+8U1C/He2/2uaqkQJp
+Mu062WpW59wqVw3k/m+z1Shy1VAik1yamC/4RzKyydGb7f5qRFW3T9SiSP/dlECZJ6kW8fasS1R2
+qU/vZkq1Wsvq+dPvS9M1HdOybaFtLMv/ah6YBjWnmD/ZDfvxG8wCT16WXLrmcU2Y8pXNa+ktT5dH
+dvxjMWwSTbysDReoPitrsR8W7Zd31SF06x0ky4+eSYp7v/wislmpNrlKH7wSp/l83cmLfrOBegH6
+8rsNfn2zAWDM+W6DX99soAbpl99t8OubDVxeirsNAr+92YAU4TvdbfDrmw3UhLbldxv8+mYDl5fi
+boNf32wANOZ8t8GvbzZweSnuNvj1zQbouXK82yDw25sNMC7meLfBr282wFJMx7sNAr+92QB23/lu
+g1/fbABrcbrbAAxgh/sFHC81QHt/tQsVVptUuc9gVh6/eKPBBu8zUEvKrW402OB9Bvq1OAs3GgQ2
+d58BXryl3mhgIVoNlZsF081B0jDIjVPfmb3PmTC6RWob5fZ9/g7AkL4HWVHdJnC5lExV9Au9zF8K
+EM+cN47u9J7Yj/jopGQ5+L1DHEuGywO2qsJl9rHpbRNXMuxVXxV0IPck5YqfWUq47+ygs1XcnaVN
+vM2c5kRg9vQwgybU78d6W1LknzvJSJNrq36B0vM2iWjgqVRiGiUmt783muphDxQE7yAIvv2pXmC3
+qgyWPxmWofMgljn/+jnjMqGngDGW0mxfZAPj7G7685kPJpnjaZQQl8ur31iAQraRhR0ZAPqDUzWO
+fFS8IUEYY1TiOBuaRSXUT3ZwwZEHyed7vp93ti/aB8qUKvGr3e/qLBSSnt3Nu6uFQuDgoslBrihY
+JIHPJ4Z9ufxMRfziyJgRQfJFMOuWI/EJvK/sKdPKPuwBEvQ06fte7r0w4MFw2/pMdfKJseoO1Or9
+UUDf4+5Xoe00DIpKqJ3zfUivWP5fx5i4d7hvOGiRA7meaX1dHDKRev4ED1Ioze0cvWfC0/EDSJ/K
+VHvABJOV7G5HzWzeO+NzvnxSVyH2E7HsAXDQVP1E0S0vSbRBi2Tc1xOVG6mMmaEldX+1AIia4Y4R
+R/2GgMF/H7viQEbnLPuW7TeNuWQurxdayq3JdIgdIm+pVrvTL9T+aY1crFv5j4H/WDfnjspuLhLB
+fxg3D/8v1F2+xqA7GI397kLf5X07SI4mmU5j0hn0a6N/3DFsergs3J5n3DH3rGvc7QNImDfoDE/8
+mLz2BtC9uRh3Ev7/8LdrfwpzZ+D3axcTZjg+4mbCLCcL8E+EkSWY+tvFqIDBC//AHxfwyxc0/e0W
+3JfupxfG3cSxblwCK4R5GcAWInyYkeDtntIWjUKTFGZFRnRjQ1SGhQnRaDgiwUwCy4Yl8prEhwWZ
+4dxpl8AIAI0IDyUAxM3LXDjKiCym74UlkHxuXpLDgihIbkFkw5gCBC/xUT4s8xzMIQphjmOjbj4i
+hAWOg8lEeCREeTfPywCaQF7jZFguvMaL4QjHRsjgcoQX3TwnhMWIDFBH5TDLsvAaQC1HRAXGKBPF
+11gmLIk8QBAVwxLDYCc2zETgF5wtKokiaYmwLC6fA0AkjrzHwioFVmljYd2kJRpRWxgYkrREohHS
+wsusSN7jw1wEloC4EWVWgLXwAGaUcwOCw7LMwS+48IgIA0RkpQXekyPhKC/xSi+JgUHZCKBHgl8Y
+QIYgSWRT+EhUIDsHC5ZwC8jOMazSxghKJwkXjNsr46YubHja9QETQn+YXMGxBLvWI22wgIjSJsJa
+sUXgcBBsEQSlJSLwSgP8z91wKZ0krRMfdSsDCbOBRPfidA0AggGiBsTBS6zyROQEAgduiCiSpoiE
+hAQtUVmQlRYetxGIjYmyCiCw3wIBZLEXjiSpI0UlZaS56RCO/Vvrw0pOoXb4wiyMzA==
+
+
+ IPBw1sNSVMLjx8Ay4fBxoFlGOaQlwDEflWRcBeCdY4AKeUEGJCBa4HiJER7pmwHqwpPCSHBSgKp5
+IBegdDwgAg/HgQFUzdoKpC0aZZR+oN5ESFtEwSTPiGExipvEc2FJ4pAykT/g8YWJGFw/0iXP424J
+XAQQF4XXWJhbJCQjKQTCs3Bco4h3eJ8nYEELJ/HaYQfCBrA4EagPVyHKYZ6JwuBwklgBtrvqQtqO
+EMKOIow8TAa/8BKLrUDRPJwVNxx2RAgH/Tl8EoFfkUphRs7NCZEwnGGBkIyMZMVxeKwFmCfKAb9D
+YIBvhCWYi8DAsTATxwHIwK2gJRoWETwOliUzEraIsE+AKGA2wEMAoQilIMEpbbhYOHiiRHYJUCVE
+ZDcL7AQISybwwiRzLSpXSLv0Njie5GQADAycDQ4OmKmN4QSln8wqsDLALqMRmBMQIUUA8xwTBUaJ
+x59H/gHUzOGGMQJH4OJkgKLhQvgJqQMWYbGMRFCj8KIIo5x2DqkCuQ3wpGiEENQicRacaL6QUoQf
+iEIi+kKhtYThZNBr1CZUwlDrSiUMiSB0t1eQeVGNBQq6zIuqMk/WZF5ElXkozRSZx2kyT9RlXkST
+eTyReYwm83hN5kU1mcfrMo/VZJ64IPMiZpnHW8g8XpN5vCrzJE6Tebwm80RN5gGlqTJPVmUesBmT
+zIOWBZkHbSaZhy3zMg9bFmQeYy/zhAWZJ1rIPEGTeZIq81hGk3lRTeYJusyLajJPUGVeVJN5gibz
+zBuuyDxWE0K8LvNYTebxmsxjNZnHazKPVWUer8s8VpN5vCbzWE3m8ZrMM083k3mSrAkhXpN50KTK
+PF6VedCiSjNek2aMJvP4mcxb7EVGktSRiMwzT4dwIHELMuKMCYtAKeRI8ApDR/TLEYmwYCaCHB4o
+CTghS/YxCoyHsHxRIrsv4mmRCOETKQBDANkCBxeEqCInkZNGeZacLAGJFV8DkmR5RCD8AhySMEMg
+OlwdSC+ZQTICBHKIUiAaEJ4CvofgImkRlVKAo4AaUwQXIIiEJHG/kGgiynuyQtx4bkVCLNBL5nBX
+NNkrgFgBquHIsiMRWSRwskyUSGNAU1RAARVl8OiwbgVxiE0CCse7F1CZduKvU3K2EYG8DP/KcHh6
+5NzKHApWra1gbOPIlhQMby62zN77mDXCsQ3LUZCehglmbQVjG6yPFwTDeJZNszfxPAE9inxkBgqS
+kKjqBDPoDE36svQ3rdq0Vw1TzGAxzGGAz9CmL01/16pt9u4HbgfsuETYAHBYVuIJa4jgaRH1poJC
+fUwkMtfGAwELeAIt20D3kGUydQQYRASp2dgGS5WRunhU6YncRtUZGR7IA4kTUFSwirAXBGQ/ArIR
+hANoH4hRAJYbxbMCSiacF2xRtSzQhsKiGNUb4DXUcfA8651gX4Fjw2t8FMSOzJOWqERAEhXJogii
+qBTR2mSi2oFKysC5I2/KyIyUNo5lUO+UUF7gaHjM4QVBANYuskaw1AZlNaAyCoZOEdT0WMJBQNuV
+CVok5ABkwShj8DUQpiIyOgHPLbK+CAhTCTkPoJOXREXOwmAGpKM0jhJJqTaR/cLtZ/Dko/rECgo3
+4ySJJfsQAWUayBKMYxaPu9aCImzWBlwQeQiOBaQYlWW9DWQTTITyiVdsDpwO6JHVQUgrVpQEG2Ak
+D2xTCVCWOA3QOTolupxiovCgFER5lKPA2qISCKqe0oaESJoiZAxg5qh5ALeXJNRCo7AIGeUbil8B
+dWHoIQqMYWbEGlgZojxP5lFgqjzqOmAnSBLuN/RiCC9EWxwsFTJ6RJYUoSICTnAs2GdgOpLephyt
+KIeUgnZTBAWKonQocImipFDB3IlMW59INLhA8qmWTZTQHEgunqwZ9CeOaNDA9QRiXcvAEQhUAop5
+BVeirFC0iDJc5MnuE9JWDrLEsaoNilZVgfAK2DhJkb6oguC7qABGFH4eYSKyijGOVfuBbCNNomrb
+oZohs4Sjo56IG4jTMqgN4NaDwBNV8ECdB4YqabIJNxctzDuVBiReaSPDkhY8FKQFjaYFOklrigmA
+LEWJwQ1oifJEakTQRANyB8qAHZIi2sZzgtrEaaudf1W1Mm5dstvndz/cu5ZJRK0Ph4pVhKiAcGii
+HApGMKlQj5VUHQtW0HVxUcQpSm+wfjng5Ni28G4XQLCfkxMRUlRv0XCLAP5gLmAOIOUVNUqG0wHD
+ossCSJNsBuEqXYtXHaYCWgazQVaEG2jvOFUE7UtBUa4icNpgWCBB0CZEhf3wUVzB4qvLp0IHGyIB
+2WOEiaJURnKKsGhBC7hvcIi7hAswHE6vyZfu4qsOM0mCIkN5kEwysapwBKJO88hIQVTgqBJaNsjE
+gXEC5ZAm05sOExGjAfmliLiAXcc1RZQTh2IRrG6ewI/ePpRT0I8YUV2Ldx3mQncZw0pEFBDeDHNx
+ILPwBHBwGkEq4LCg0ooiylt4xrEcWejCq05TgeYqEi0BmJhEDhs6TDhUldHW59RhkVsSLhuBbZTJ
+qsyvLp9J0WKRXDkZLVFclMAAGxNR7YU5QQ1EaJEfS0TX4HhFu+5avOswF4NMl0eGDxKDEYkvDHkC
+4V3o5kEGDOPCwY2KaIKybDjKsjJpM7+7fC5V8KG4n3Nzwepwq2zcXBxrdnNxrIWbS1LdXGC8L7q5
+ZDRaoIlRLCvQQBn0I6C1CFsDz4jbDu0oBjUAaGPRVIA2dF2xqGihBSSJskpVHDrIOFSyZYJpURkL
+IOTRT4WePEmUOGKBy+iDRGUClKYosbeiRNxBi4xuCvQIRlVvInE7RfQmlFUo/1nF18QSrzlxcxG5
+xqMfh7jQ0JeG+pQiHBUnEqpmcIyEKJxiOHthiZhbyAtZ0c0BouDoKwoFx0RY8hpOi2tDJicR4cYR
+7xu6xMhxBV7LEZNZVjGM/jD8BRBEOBF6z2CkCApgVlaYUxQ9hRFeUxRgEjTUOaI/otNMa2kQlspw
+6GDRezEKmnliVgLj5UBTg8MkkwWjcgrT8cAtRBRnuMXoSOOQIEgngB+1EHS+SRySmIiCNYLmKScg
+USP5yKjqwUpA1spIh3iMiJwiXEIhSPTTRKNq2EB1jQqKaxTQBBhTXaOi5hrlFlyj7IJrFOYBjosi
+JIKyBNaLvh5CKKCHMKiHKO5GpBiM4PACKuEcg5qbdkRBhSDvCSIwaWQGQjQCK4ZHgog8F6hRBnMD
+34OHircJoBPRaObQlGAjCmcGUgYwQUkDBRNb0KJnRLKfwLii2AtMBOLcIr1ERlGcJVDHoQU1LZkl
+DJUokQ0iNVEnBgg4Hl7n0HkUVZkzUfU5UMBFDq0HHmMVMiHfqKS4YdHyAWQAMmFfRRZ1woga2MGR
+0Y0gYDhJIjhBB5PMysQw4XmwylAYK6cPNlpGjxi2sCKgXiAqJfH3gdmGDjTSiZFYluxcFIQPaYmi
+3sfxsuo0gxYRthIxGVUIDJvIatHhSxyR8DqPh59DhiKyioEDFEe8wgxhqVGVj+PSgLMD61HCeBLL
+oH8ZGST6LOAXYLKc+l6EHAwZNw5sKw4dh1FB8dezHJIOMk+Dnz1NfNBmP3tkwc8uWPjZuQU/u6h5
+1XnNzy7qPvWZn33WFtV96hHNzz7Xtuhn51H9jxBWSyw2JHJRwBYOYzLYMvOzEwPY7GfnzH52IAST
+n52Z+dmB04DOAfwAqJwHBgK0gfChps6rMoSLomcN0QAnV0RhAu/JnGKdzNoKxjYeScDUJoaBAGA0
+9DAyRKRhZAnIEpQTVbrA+WAjxE7mkBGAugRtOABuGViRsEkCacHzzEWRVyBeAFCGJxYBgioJguIj
+YDmF4cObPEGLwn70yAKrRBbSxrBX1Bz24qSFsBenh71ELezF6WEv0SLsFV0Ie0UWwl68Oeyl2DeE
+wnlZIFSIZlhPDdDwircRaE5ws6CskOOD+8FEyYFCZiMpwWMiQ4AwgbEz6GuYtRWgDf2caCkAaxcx
+ukDeRCUHcSZE8HDAoMSYAP01wiiEg5FscoCA3eHZQk4gS0TWgcxB1zOHngMGhS0GDnji58eRMPSA
+yFdpGTkB8E0SH4oi3zGv1zHaaRX58RZr7VZlVOt0WyNXe1z7q+Wu9fuDSW3SGsITd3vUGk8Go5Z7
+/Dn4G1vgFa2715u9zrn+L1T7Dxc=
+
+ </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/webapps/docs/images/update.gif b/webapps/docs/images/update.gif
new file mode 100644
index 0000000..31e22ab
--- /dev/null
+++ b/webapps/docs/images/update.gif
Binary files differ
diff --git a/webapps/docs/images/void.gif b/webapps/docs/images/void.gif
new file mode 100644
index 0000000..e565824
--- /dev/null
+++ b/webapps/docs/images/void.gif
Binary files differ
diff --git a/webapps/docs/index.html b/webapps/docs/index.html
new file mode 100644
index 0000000..a46e0f0
--- /dev/null
+++ b/webapps/docs/index.html
@@ -0,0 +1,214 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 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>
+
+<p>Select one of the links from the navigation menu (to the left) to drill
+down to the more detailed documentation that is available. Each available
+manual is described in more detail 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="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 7, and using many of the Apache Tomcat features.</p>
+
+<ol>
+<li><a href="introduction.html"><strong>Introduction</strong></a> - A
+ brief, high level, overview of Apache Tomcat.</li>
+<li><a href="setup.html"><strong>Setup</strong></a> - How to install and run
+ 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 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>
+<li><a href="deployer-howto.html"><strong>Deployer</strong></a> -
+ Operating the Apache Tomcat Deployer to deploy, precompile, and validate web
+ applications.</li>
+<li><a href="manager-howto.html"><strong>Manager</strong></a> -
+ Operating the <strong>Manager</strong> web app to deploy, undeploy, and
+ redeploy applications while Apache Tomcat is running.</li>
+<li><a href="realm-howto.html"><strong>Realms and Access Control</strong></a>
+ - Description of how to configure <em>Realms</em> (databases of users,
+ passwords, and their associated roles) for use in web applications that
+ utilize <em>Container Managed Security</em>.</li>
+<li><a href="security-manager-howto.html"><strong>Security Manager</strong></a>
+ - Configuring and using a Java Security Manager to
+ support fine-grained control over the behavior of your web applications.
+ </li>
+<li><a href="jndi-resources-howto.html"><strong>JNDI Resources</strong></a>
+ - Configuring standard and custom resources in the JNDI naming context
+ 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.
+ Examples for many popular databases.</li>
+<li><a href="class-loader-howto.html"><strong>Classloading</strong></a>
+ - 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="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 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> -
+ 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>
+<li><a href="cluster-howto.html"><strong>Apache Tomcat Clustering</strong></a> -
+ Enable session replication in a Apache Tomcat environment.</li>
+<li><a href="balancer-howto.html"><strong>Balancer</strong></a> -
+ Configuring, using, and extending the load balancer application.</li>
+<li><a href="connectors.html"><strong>Connectors</strong></a> -
+ Connectors available in Apache Tomcat, and native web server integration.</li>
+<li><a href="monitoring.html"><strong>Monitoring and Management</strong></a> -
+ Enabling JMX Remote support, and using tools to monitor and manage Apache Tomcat.</li>
+<li><a href="logging.html"><strong>Logging</strong></a> -
+ Configuring logging in Apache Tomcat.</li>
+<li><a href="apr.html"><strong>Apache Portable Runtime</strong></a> -
+ Using APR to provide superior performance, scalability and better
+ integration with native server technologies.</li>
+<li><a href="virtual-hosting-howto.html"><strong>Virtual Hosting</strong></a> -
+ Configuring virtual hosting in Apache Tomcat.</li>
+<li><a href="aio.html"><strong>Advanced IO</strong></a> -
+ 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 an Apache Tomcat server.
+</p>
+<ul>
+<li><a href="RELEASE-NOTES.txt"><strong>Release notes</strong></a>
+ - Known issues in this Apache Tomcat release.
+ </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 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>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><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">
+ <strong>JSP 2.2 and EL 2.2 Specifications</strong></a>,
+ <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/servlet/jsp/package-summary.html">
+ <strong>JSP 2.2 Javadoc (note it is labelled as JSP 2.1)</strong></a>,
+ <a href="http://docs.oracle.com/javaee/6/api/index.html?javax/el/package-summary.html">
+ <strong>EL 2.2 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>
+
+<p>The following documents are for Java developers who wish to contribute to
+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 source code (and the
+ other packages that it depends on), and build a binary distribution from
+ those sources.
+ </li>
+<li><a href="changelog.html"><strong>Changelog</strong></a> - Details the
+ changes made to Apache Tomcat.
+ </li>
+<li><a href="http://wiki.apache.org/tomcat/TomcatVersions"><strong>Status</strong></a> -
+ Apache Tomcat development status.
+ </li>
+<li><a href="developers.html"><strong>Developers</strong></a> - List of active
+ Apache Tomcat contributors.
+ </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.</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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/introduction.html b/webapps/docs/introduction.html
new file mode 100644
index 0000000..287d6ce
--- /dev/null
+++ b/webapps/docs/introduction.html
@@ -0,0 +1,149 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>For administrators and web developers alike, there are some important bits
+of information you should familiarize yourself with before starting out. This
+document serves as a brief introduction to some of the concepts and
+terminology behind the Tomcat container. As well, where to go when you need
+help.</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="Terminology"><strong>Terminology</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>In the course of reading these documents, you will run across a number of
+terms; some specific to Tomcat, and others defined by the
+<a href="http://wiki.apache.org/tomcat/Specifications">Servlet and
+JSP specifications</a>.</p>
+
+<ul>
+<li><strong>Context</strong> - In a nutshell, a Context is a
+ web application.</li>
+<li><strong>Term2</strong> - This is it.</li>
+<li><strong>Term3</strong> - This is it!</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="Directories and Files"><!--()--></a><a name="Directories_and_Files"><strong>Directories and Files</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Throughout the docs, you'll notice there are numerous references to
+<strong>$CATALINA_HOME</strong>. This represents the root of your Tomcat
+installation. When we say, "This information can be found in your
+$CATALINA_HOME/README.txt file" we mean to look at the README.txt file at the
+root of your Tomcat install. Optionally, Tomcat may be configured for multiple
+instances by defining <strong>$CATALINA_BASE</strong> for each instance. If
+multiple instances are not configured, <strong>$CATALINA_BASE</strong> is the
+same as <strong>$CATALINA_HOME</strong>.</p>
+
+<p>These are some of the key tomcat directories:</p>
+
+<ul>
+<li><strong>/bin</strong> - Startup, shutdown, and other scripts. The
+ <code>*.sh</code> files (for Unix systems) are functional duplicates of
+ the <code>*.bat</code> files (for Windows systems). Since the Win32
+ command-line lacks certain functionality, there are some additional
+ files in here.</li>
+<li><strong>/conf</strong> - Configuration files and related DTDs. The most
+ important file in here is server.xml. It is the main configuration file
+ for the container.</li>
+<li><strong>/logs</strong> - Log files are here by default.</li>
+<li><strong>/webapps</strong> - This is where your webapps go.</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 Tomcat"><!--()--></a><a name="Configuring_Tomcat"><strong>Configuring Tomcat</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>This section will acquaint you with the basic information used during
+the configuration of the container.</p>
+
+<p>All of the information in the configuration files is read at startup,
+meaning that any change to the files necessitates a restart of the container.
+</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 to Go for Help"><!--()--></a><a name="Where_to_Go_for_Help"><strong>Where to Go for Help</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>While we've done our best to ensure that these documents are clearly
+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 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></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
+ lists. Since the links change over time, clicking here will search
+ <a href="http://www.google.com/search?q=tomcat+mailing+list+archives">Google</a>.
+ </li>
+<li>The TOMCAT-USER mailing list, which you can subscribe to
+ <a href="http://tomcat.apache.org/lists.html">here</a>. If you don't
+ get a reply, then there's a good chance that your question was probably
+ answered in the list archives or one of the FAQs. Although questions
+ about web application development in general are sometimes asked and
+ answered, please focus your questions on Tomcat-specific issues.</li>
+<li>The TOMCAT-DEV mailing list, which you can subscribe to
+ <a href="http://tomcat.apache.org/lists.html">here</a>. This list is
+ <strong>reserved</strong> for discussions about the development of Tomcat
+ itself. Questions about Tomcat configuration, and the problems you run
+ into while developing and running applications, will normally be more
+ appropriate on the TOMCAT-USER list instead.</li>
+</ul>
+
+<p>And, if you think something should be in the docs, by all means let us know
+on the TOMCAT-DEV list.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jasper-howto.html b/webapps/docs/jasper-howto.html
new file mode 100644
index 0000000..1fb368f
--- /dev/null
+++ b/webapps/docs/jasper-howto.html
@@ -0,0 +1,406 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 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:
+<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
+the performance of JSP pages which use custom tags.</li>
+<li><strong>Background JSP compilation</strong> - If you make a change to
+a JSP page which had already been compiled Jasper 2 can recompile that
+page in the background. The previously compiled JSP page will still be
+available to serve requests. Once the new page has been compiled
+successfully it will replace the old page. This helps improve availability
+of your JSP pages on a production server.</li>
+<li><strong>Recompile JSP when included page changes</strong> - Jasper 2
+can now detect when a page included at compile time from a JSP has changed
+and then recompile the parent JSP.</li>
+<li><strong>JDT used to compile JSP pages</strong> - The
+Eclipse JDT Java compiler is now used to perform JSP java source code
+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>
+
+</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">
+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>.
+
+<ul>
+<li><strong>checkInterval</strong> - If development is false and checkInterval
+is greater than zero, background compiles are enabled. checkInterval is the time
+in seconds between checks to see if a JSP page (and its dependent files) needs
+to be recompiled. Default <code>0</code> seconds.</li>
+
+<li><strong>classdebuginfo</strong> - Should the class file be compiled with
+debugging information? <code>true</code> or <code>false</code>, default
+<code>true</code>.
+</li>
+
+<li><strong>classpath</strong> - Defines the class path to be used to compile
+the generated servlets. This parameter only has an effect if the ServletContext
+attribute org.apache.jasper.Constants.SERVLET_CLASSPATH is not set. This
+attribute is always set when Jasper is used within Tomcat. By default the
+classpath is created dynamically based on the current web application.</li>
+
+<li><strong>compiler</strong> - Which compiler Ant should use to compile JSP
+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.6</code>)</li>
+
+<li><strong>compilerTargetVM</strong> - What JDK version are the generated files
+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
+the modificationTestInterval parameter.<code>true</code> or <code>false</code>,
+default <code>true</code>.</li>
+
+<li><strong>displaySourceFragment</strong> - Should a source fragment be
+included in exception messages? <code>true</code> or <code>false</code>,
+default <code>true</code>.</li>
+
+<li><strong>dumpSmap</strong> - Should the SMAP info for JSR45 debugging be
+dumped to a file? <code>true</code> or <code>false</code>, default
+<code>false</code>. <code>false</code> if suppressSmap is true.</li>
+
+<li><strong>enablePooling</strong> - Determines whether tag handler pooling is
+enabled. This is a compilation option. It will not alter the behaviour of JSPs
+that have already been compiled. <code>true</code> or <code>false</code>,
+default <code>true</code>.
+</li>
+
+<li><strong>engineOptionsClass</strong> - Allows specifying the Options class
+used to configure Jasper. If not present, the default EmbeddedServletOptions
+will be used.
+</li>
+
+<li><strong>errorOnUseBeanInvalidClassAttribute</strong> - Should Jasper issue
+an error when the value of the class attribute in an useBean action is not a
+valid bean class? <code>true</code> or <code>false</code>, default
+<code>true</code>.</li>
+
+<li><strong>fork</strong> - Have Ant fork JSP page compiles so they are
+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>.</li>
+
+<li><strong>ieClassId</strong> - The class-id value to be sent to Internet
+Explorer when using <jsp:plugin> tags. Default
+<code>clsid:8AD9C840-044E-11D1-B3E9-00805F499D93</code>.</li>
+
+<li><strong>javaEncoding</strong> - Java file encoding to use for generating
+java source files. Default <code>UTF8</code>.</li>
+
+<li><strong>keepgenerated</strong> - Should we keep the generated Java source
+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
+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
+0 will cause the JSP to be checked on every access. Used in development mode
+only. Default is <code>4</code> seconds.</li>
+
+<li><strong>recompileOnFail</strong> - If a JSP compilation fails should the
+modificationTestInterval be ignored and the next access trigger a re-compilation
+attempt? Used in development mode only and is disabled by default as compilation
+may be expensive and could lead to excessive resource usage.</li>
+
+<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>
+
+<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>
+</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
+loader, which will help tremendously when compiling on large installations with
+tens of JARs. On fast servers, this will allow sub-second recompilation cycles
+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 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">
+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:
+<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>
+
+<p>The main JSP optimization which can be done is precompilation of JSPs.
+However, this might not be possible (for example, when using the
+jsp-property-group feature) or practical, in which case the configuration of the
+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.
+<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
+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
+this to a high value will improve performance a lot.</li>
+<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 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>
+<project name="Webapp Precompilation" default="all" basedir=".">
+
+ <import file="${tomcat.home}/bin/catalina-tasks.xml"/>
+
+ <target name="jspc">
+
+ <jasper
+ validateXml="false"
+ uriroot="${webapp.path}"
+ webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml"
+ outputDir="${webapp.path}/WEB-INF/src" />
+
+ </target>
+
+ <target name="compile">
+
+ <mkdir dir="${webapp.path}/WEB-INF/classes"/>
+ <mkdir dir="${webapp.path}/WEB-INF/lib"/>
+
+ <javac destdir="${webapp.path}/WEB-INF/classes"
+ optimize="off"
+ debug="on" failonerror="false"
+ srcdir="${webapp.path}/WEB-INF/src"
+ excludes="**/*.smap">
+ <classpath>
+ <pathelement location="${webapp.path}/WEB-INF/classes"/>
+ <fileset dir="${webapp.path}/WEB-INF/lib">
+ <include name="*.jar"/>
+ </fileset>
+ <pathelement location="${tomcat.home}/lib"/>
+ <fileset dir="${tomcat.home}/lib">
+ <include name="*.jar"/>
+ </fileset>
+ <fileset dir="${tomcat.home}/bin">
+ <include name="*.jar"/>
+ </fileset>
+ </classpath>
+ <include name="**" />
+ <exclude name="tags/**" />
+ </javac>
+
+ </target>
+
+ <target name="all" depends="jspc,compile">
+ </target>
+
+ <target name="cleanup">
+ <delete>
+ <fileset dir="${webapp.path}/WEB-INF/src"/>
+ <fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/>
+ </delete>
+ </target>
+
+</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>
+</p>
+
+<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=<$TOMCAT_HOME> -Dwebapp.path=<$WEBAPP_PATH>
+</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>
+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
+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
+are automatically compiled as part of the build process.
+</p>
+
+<p>
+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 6
+features inside your jsp's, add the following javac compiler task attributes:
+<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
+<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
+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>
+<ul>
+<li> When you switch to another Tomcat release, then regenerate and recompile
+your jsp's with the new Tomcat version.</li>
+<li>Use java system property at server runtime to disable PageContext pooling
+<code>org.apache.jasper.runtime.JspFactoryImpl.USE_POOL=false</code>.
+and limit the buffering with
+<code>org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER=true</code>. Note
+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="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>
+
+<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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jdbc-pool.html b/webapps/docs/jdbc-pool.html
new file mode 100644
index 0000000..1f11e1a
--- /dev/null
+++ b/webapps/docs/jdbc-pool.html
@@ -0,0 +1,819 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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/">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:
+ <ol>
+ <li>commons-dbcp is single threaded, in order to be thread safe commons-dbcp locks the entire pool, even during query validation.</li>
+ <li>commons-dbcp is slow - as the number of logical CPUs grow, the performance suffers, the above point shows that there is not support for high concurrency
+ Even with the enormous optimizations of the <code>synchronized</code> statement in Java 6, commons-dbcp still suffers in speed and concurrency.</li>
+ <li>commons-dbcp is complex, 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 can't compile it with JDK 1.6, or if you run on JDK 1.6/1.7 you will get
+ <code>NoSuchMethodException</code> for all the methods not implemented, even if the driver supports it. </li>
+ <li>The commons-dbcp has become fairly stagnant. Sparse updates, releases, and new feature support.</li>
+ <li>It's not worth rewriting over 60 classes, when something as a connection pool can be accomplished with as a much simpler implementation.</li>
+ <li>Tomcat jdbc pool implements a fairness option not available in commons-dbcp and still performs faster than commons-dbcp</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>
+
+ <p>Features added over other connection pool implementations
+ <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<Connection></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>
+ </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="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-6.0-doc/jndi-datasource-examples-howto.html">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 )
+ <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>
+ 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.
+ NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.
+ 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">testOnReturn</code></td><td align="left" valign="center">
+ <p>(boolean) The indication of whether objects will be validated before being returned to the pool.
+ NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.
+ 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.
+ NOTE - for a true value to have any effect, the <code>validationQuery</code> parameter must be set to a non-null string.
+ 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>.
+ 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">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 syntaz 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>30000</code> (30 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 > 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://issues.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></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 invokation 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://issues.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
+ The default value is <code>1000</code> 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="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
+ 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-6.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 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>
+ 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) {}
+ }
+ }
+
+ }
+</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>
+ <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 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>
+<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"/>
+</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>
+ <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<Connection> getConnectionAsync()</code>.
+ In order to use the async retrieval, two conditions must be met:
+ <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 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>
+ Connection con = null;
+ try {
+ Future<Connection> 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");
+</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="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 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 JdbcInterceptor() {
+ }
+</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 connection is borrowed from the pool, the interceptor can initialize or in some other way react to the event by implementing the
+<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 abstract void reset(ConnectionPool parent, PooledConnection con);
+</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>
+ 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
+<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 Object invoke(Object proxy, Method method, Object[] args) throws Throwable
+</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>
+ 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 invokation to <code>java.sql.Connection.close()</code> a noop
+ if the connection has been closed
+<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>
+ if (CLOSE_VAL==method.getName()) {
+ if (isClosed()) return null; //noop for already closed.
+ }
+ return super.invoke(proxy,method,args);
+</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>
+ 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:
+<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>
+ if (compare(CLOSE_VAL,method)) {
+ if (isClosed()) return null; //noop for already closed.
+ }
+ return super.invoke(proxy,method,args);
+</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>
+ 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.
+<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 void poolStarted(ConnectionPool pool) {
+ }
+
+ public void poolClosed(ConnectionPool pool) {
+ }
+</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 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
+<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>
+ String jdbcInterceptors=
+ "org.apache.tomcat.jdbc.pool.interceptor.ConnectionState(useEquals=true,fast=yes)"
+</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>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.
+<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 void setProperties(Map<String, InterceptorProperty> properties) {
+ super.setProperties(properties);
+ final String myprop = "myprop";
+ InterceptorProperty p1 = properties.get(myprop);
+ if (p1!=null) {
+ setMyprop(Long.parseLong(p1.getValue()));
+ }
+ }
+</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="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.
+<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>
+ Connection con = datasource.getConnection();
+ Connection actual = ((javax.sql.PooledConnection)con).getConnection();
+</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>
+
+</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-6.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 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>
+ 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
+</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>
+ 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.
+<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 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)
+</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>
+ 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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jndi-datasource-examples-howto.html b/webapps/docs/jndi-datasource-examples-howto.html
new file mode 100644
index 0000000..4f0ad83
--- /dev/null
+++ b/webapps/docs/jndi-datasource-examples-howto.html
@@ -0,0 +1,699 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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_&_10g">Oracle 8i, 9i & 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
+JNDI-Resources-HOWTO. However, feedback from <code>tomcat-user</code> has
+shown that specifics for individual configurations can be rather tricky.</p>
+
+<p>Here then are some example configurations that have been posted to
+tomcat-user for popular databases and some general tips for db usage.</p>
+
+<p>You should be aware that since these notes are derived from configuration
+and/or feedback posted to <code>tomcat-user</code> YMMV :-). Please let us
+know if you have any other tested configurations that you feel may be of use
+to the wider audience, or if you feel we can improve this section in anyway.</p>
+
+<p>
+<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 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
+<a href="config/host.html">Host</a> configuration references, including
+the section about Automatic Application Deployment in the latter reference.
+</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="DriverManager, the service provider mechanism and memory leaks"><!--()--></a><a name="DriverManager,_the_service_provider_mechanism_and_memory_leaks"><strong>DriverManager, the service provider mechanism and memory leaks</strong></a></font></td></tr><tr><td><blockquote>
+
+<p><code>java.sql.DriverManager</code> supports the
+<a href="http://docs.oracle.com/javase/6/docs/api/index.html?java/sql/DriverManager.html">service
+provider</a> mechanism. This feature is that all the available JDBC drivers
+that announce themselves by providing a <code>META-INF/services/java.sql.Driver</code>
+file are automatically discovered, loaded and registered,
+relieving you from the need to load the database driver explicitly before
+you create a JDBC connection.
+However, the implementation is fundamentally broken in all Java versions for
+a servlet container environment. The problem is that
+<code>java.sql.DriverManager</code> will scan for the drivers only once.</p>
+
+<p>The <a href="config/listeners.html">JRE Memory Leak Prevention Listener</a>
+that is included with Apache Tomcat solves this by triggering the drivers scan
+during Tomcat startup. This is enabled by default. It means that only
+libraries visible to the listener such as the ones in
+<code>$CATALINA_BASE/lib</code> will be scanned for database drivers.
+If you are considering disabling this feature, note that
+the scan would be triggered by the first web application that is
+using JDBC, leading to failures when this web application is reloaded
+and for other web applications that rely on this feature.
+</p>
+
+<p>Thus, the web applications that have database drivers in their
+<code>WEB-INF/lib</code> directory cannot rely on the service provider
+mechanism and should register the drivers explicitly.</p>
+
+<p>The list of drivers in <code>java.sql.DriverManager</code> is also
+a known source of memory leaks. Any Drivers registered
+by a web application must be deregistered when the web application stops.
+Tomcat will attempt to automatically discover and deregister any
+JDBC drivers loaded by the web application class loader when the web
+application stops.
+However, it is expected that applications do this for themselves via
+a <code>ServletContextListener</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="Database Connection Pool (DBCP) Configurations"><!--()--></a><a name="Database_Connection_Pool_(DBCP)_Configurations"><strong>Database Connection Pool (DBCP) Configurations</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The default database connection pool implementation in Apache Tomcat
+relies on the libraries from the
+<a href="http://commons.apache.org/">Apache Commons</a> project.
+The following libraries are used:
+</p>
+
+<ul>
+<li>Commons DBCP</li>
+<li>Commons Pool</li>
+</ul>
+
+<p>
+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.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>
+
+<p>See the <a href="http://commons.apache.org/dbcp/configuration.html">
+DBCP documentation</a> for a complete list of configuration 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="Preventing database connection pool leaks"><!--()--></a><a name="Preventing_database_connection_pool_leaks"><strong>Preventing database connection pool leaks</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>
+A database connection pool creates and manages a pool of connections
+to a database. Recycling and reusing already existing connections
+to a database is more efficient than opening a new connection.
+</p>
+
+<p>
+There is one problem with connection pooling. A web application has
+to explicitly close ResultSet's, Statement's, and Connection's.
+Failure of a web application to close these resources can result in
+them never being available again for reuse, a database connection pool "leak".
+This can eventually result in your web application database connections failing
+if there are no more available connections.</p>
+
+<p>
+There is a solution to this problem. The Apache Commons DBCP can be
+configured to track and recover these abandoned database connections. Not
+only can it recover them, but also generate a stack trace for the code
+which opened these resources and never closed them.</p>
+
+<p>
+To configure a DBCP DataSource so that abandoned database connections are
+removed and recycled add the following attribute to the
+<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>
+
+<p>
+When available database connections run low DBCP will recover and recycle
+any abandoned database connections it finds. The default is <code>false</code>.
+</p>
+
+<p>
+Use the <code>removeAbandonedTimeout</code> attribute to set the number
+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>
+
+<p>
+The default timeout for removing abandoned connections is 300 seconds.
+</p>
+
+<p>
+The <code>logAbandoned</code> attribute can be set to <code>true</code>
+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>
+<p>
+The default is <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="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>
+<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>
+<ul>
+<li>MySQL 3.23.47, MySQL 3.23.47 using InnoDB,, MySQL 3.23.58, MySQL 4.0.1alpha</li>
+<li><a href="http://www.mysql.com/products/connector-j">Connector/J</a> 3.0.11-stable (the official JDBC Driver)</li>
+<li><a href="http://mmmysql.sourceforge.net">mm.mysql</a> 2.0.14 (an old 3rd party JDBC Driver)</li>
+</ul>
+
+<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>
+<p>
+Ensure that you follow these instructions as variations can cause problems.
+</p>
+
+<p>Create a new test user, a new database and a single test table.
+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> GRANT ALL PRIVILEGES ON *.* TO javauser@localhost
+ -> IDENTIFIED BY 'javadude' WITH GRANT OPTION;
+mysql> create database javatest;
+mysql> use javatest;
+mysql> create table testdata (
+ -> id int not null auto_increment primary key,
+ -> foo varchar(25),
+ -> 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>
+<blockquote>
+<strong>Note:</strong> the above user should be removed once testing is
+complete!
+</blockquote>
+
+<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> insert into testdata values(null, 'hello', 12345);
+Query OK, 1 row affected (0.00 sec)
+
+mysql> select * from testdata;
++----+-------+-------+
+| ID | FOO | BAR |
++----+-------+-------+
+| 1 | hello | 12345 |
++----+-------+-------+
+1 row in set (0.00 sec)
+
+mysql>
+</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>2. Context configuration</h3>
+<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>
+<Context>
+
+ <!-- maxActive: Maximum number of database connections in pool. Make sure you
+ configure your mysqld max_connections large enough to handle
+ all of your db connections. Set to -1 for no limit.
+ -->
+
+ <!-- maxIdle: Maximum number of idle database connections to retain in pool.
+ Set to -1 for no limit. See also the DBCP documentation on this
+ and the minEvictableIdleTimeMillis configuration parameter.
+ -->
+
+ <!-- maxWait: Maximum time to wait for a database connection to become available
+ in ms, in this example 10 seconds. An Exception is thrown if
+ this timeout is exceeded. Set to -1 to wait indefinitely.
+ -->
+
+ <!-- username and password: MySQL username and password for database connections -->
+
+ <!-- driverClassName: Class name for the old mm.mysql JDBC driver is
+ 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.
+ -->
+
+ <!-- url: The JDBC connection url for connecting to your MySQL database.
+ -->
+
+ <Resource name="jdbc/TestDB" auth="Container" type="javax.sql.DataSource"
+ maxActive="100" maxIdle="30" maxWait="10000"
+ username="javauser" password="javadude" driverClassName="com.mysql.jdbc.Driver"
+ url="jdbc:mysql://localhost:3306/javatest"/>
+
+</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>
+
+<h3>3. web.xml configuration</h3>
+
+<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>
+<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"
+ version="2.4">
+ <description>MySQL Test App</description>
+ <resource-ref>
+ <description>DB Connection</description>
+ <res-ref-name>jdbc/TestDB</res-ref-name>
+ <res-type>javax.sql.DataSource</res-type>
+ <res-auth>Container</res-auth>
+ </resource-ref>
+</web-app>
+</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>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>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %>
+<%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %>
+
+<sql:query var="rs" dataSource="jdbc/TestDB">
+select id, foo, bar from testdata
+</sql:query>
+
+<html>
+ <head>
+ <title>DB Test</title>
+ </head>
+ <body>
+
+ <h2>Results</h2>
+
+<c:forEach var="row" items="${rs.rows}">
+ Foo ${row.foo}<br/>
+ Bar ${row.bar}<br/>
+</c:forEach>
+
+ </body>
+</html>
+</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>That JSP page makes use of <a href="http://java.sun.com/products/jsp/jstl">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 — 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>
+
+<p>Finally deploy your web app into <code>$CATALINA_BASE/webapps</code> either
+as a warfile called <code>DBTest.war</code> or into a sub-directory called
+<code>DBTest</code></p>
+<p>Once deployed, point a browser at
+<code>http://localhost:8080/DBTest/test.jsp</code> to view the fruits of
+your hard work.</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="Oracle 8i, 9i & 10g"><!--()--></a><a name="Oracle_8i,_9i_&_10g"><strong>Oracle 8i, 9i & 10g</strong></a></font></td></tr><tr><td><blockquote>
+<h3>0. Introduction</h3>
+
+<p>Oracle requires minimal changes from the MySQL configuration except for the
+usual gotchas :-)</p>
+<p>Drivers for older Oracle versions may be distributed as *.zip files rather
+than *.jar files. Tomcat will only use <code>*.jar</code> files installed in
+<code>$CATALINA_HOME/lib</code>. Therefore <code>classes111.zip</code>
+or <code>classes12.zip</code> will need to be renamed with a <code>.jar</code>
+extension. Since jarfiles are zipfiles, there is no need to unzip and jar these
+files - a simple rename will suffice.</p>
+
+<p>For Oracle 9i onwards you should use <code>oracle.jdbc.OracleDriver</code>
+rather than <code>oracle.jdbc.driver.OracleDriver</code> as Oracle have stated
+that <code>oracle.jdbc.driver.OracleDriver</code> is deprecated and support
+for this driver class will be discontinued in the next major release.
+</p>
+
+<h3>1. Context configuration</h3>
+<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,
+password tiger to the sid called mysid. (Note: with the thin driver this sid is
+not the same as the tnsname). The schema used will be the default schema for the
+user scott.</p>
+
+<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>
+<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"/>
+</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>2. web.xml configuration</h3>
+<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>
+<resource-ref>
+ <description>Oracle Datasource example</description>
+ <res-ref-name>jdbc/myoracle</res-ref-name>
+ <res-type>javax.sql.DataSource</res-type>
+ <res-auth>Container</res-auth>
+</resource-ref>
+</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
+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();
+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>
+</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>
+<p>PostgreSQL is configured in a similar manner to Oracle.</p>
+
+<h3>1. Required files </h3>
+<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>
+
+<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>
+<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
+in this file.
+</p>
+<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>
+<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"/>
+</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>
+
+<p>
+Use this option if you wish to define a datasource specific to your application,
+not visible to other Tomcat applications. This method is less invasive to your
+Tomcat installation.
+</p>
+
+<p>
+Create a resource definition for your <a href="config/context.html">Context</a>.
+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>
+<Context>
+
+<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"/>
+</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>
+
+<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>
+<resource-ref>
+ <description>postgreSQL Datasource example</description>
+ <res-ref-name>jdbc/postgres</res-ref-name>
+ <res-type>javax.sql.DataSource</res-type>
+ <res-auth>Container</res-auth>
+</resource-ref>
+</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>4. Accessing the datasource</h4>
+<p>
+When accessing the datasource programmatically, remember to prepend
+<code>java:/comp/env</code> to your JNDI lookup, as in the following snippet of
+code. Note also that "jdbc/postgres" can be replaced with any value you prefer, provided
+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();
+if ( cxt == null ) {
+ throw new Exception("Uh oh -- no context!");
+}
+
+DataSource ds = (DataSource) cxt.lookup( "java:/comp/env/jdbc/postgres" );
+
+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>
+
+</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>
+<p>
+These solutions either utilise a single connection to the database (not recommended for anything other
+than testing!) or some other pooling technology.
+</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="Oracle 8i with OCI client"><!--()--></a><a name="Oracle_8i_with_OCI_client"><strong>Oracle 8i with OCI client</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="Oracle 8i with OCI client/Introduction"><!--()--></a><a name="Oracle_8i_with_OCI_client/Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
+<p>Whilst not strictly addressing the creation of a JNDI DataSource using the OCI client, these notes can be combined with the
+Oracle and DBCP solution above.</p>
+<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>.
+</p>
+<p>
+After renaming <code>classes12.zip</code> file to <code>classes12.jar</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>
+</blockquote></td></tr></table>
+
+<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
+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
+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>
+<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
+<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
+<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.
+</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
+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>
+<p>
+The Oracle documentation says : "Cause: The login (connect) string contains an invalid
+driver designator. Action: Correct the string and re-submit."
+
+Change the database connect string (of the form <code>host:port:SID</code>) with this one:
+<code>(description=(address=(host=myhost)(protocol=tcp)(port=1521))(connect_data=(sid=orcl)))</code>
+</p>
+<p>
+<i>Ed. Hmm, I don't think this is really needed if you sort out your TNSNames - but I'm not an Oracle DBA :-)</i>
+</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="Common Problems"><!--()--></a><a name="Common_Problems"><strong>Common Problems</strong></a></font></td></tr><tr><td><blockquote>
+<p>Here are some common problems encountered with a web application which
+uses a database and tips for how to solve them.</p>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Intermittent Database Connection Failures"><!--()--></a><a name="Intermittent_Database_Connection_Failures"><strong>Intermittent Database Connection Failures</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+Tomcat runs within a JVM. The JVM periodically performs garbage collection
+(GC) to remove java objects which are no longer being used. When the JVM
+performs GC execution of code within Tomcat freezes. If the maximum time
+configured for establishment of a database connection is less than the amount
+of time garbage collection took you can get a database connection failure.
+</p>
+
+<p>To collect data on how long garbage collection is taking add the
+<code>-verbose:gc</code> argument to your <code>CATALINA_OPTS</code>
+environment variable when starting Tomcat. When verbose gc is enabled
+your <code>$CATALINA_BASE/logs/catalina.out</code> log file will include
+data for every garbage collection including how long it took.</p>
+
+<p>When your JVM is tuned correctly 99% of the time a GC will take less
+than one second. The remainder will only take a few seconds. Rarely,
+if ever should a GC take more than 10 seconds.</p>
+
+<p>Make sure that the db connection timeout is set to 10-15 seconds.
+For the DBCP you set this using the parameter <code>maxWait</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="Random Connection Closed Exceptions"><!--()--></a><a name="Random_Connection_Closed_Exceptions"><strong>Random Connection Closed Exceptions</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+These can occur when one request gets a db connection from the connection
+pool and closes it twice. When using a connection pool, closing the
+connection just returns it to the pool for reuse by another request,
+it doesn't close the connection. And Tomcat uses multiple threads to
+handle concurrent requests. Here is an example of the sequence
+of events which could cause this error in Tomcat:
+</p>
+<pre>
+ Request 1 running in Thread 1 gets a db connection.
+
+ Request 1 closes the db connection.
+
+ The JVM switches the running thread to Thread 2
+
+ Request 2 running in Thread 2 gets a db connection
+ (the same db connection just closed by Request 1).
+
+ The JVM switches the running thread back to Thread 1
+
+ Request 1 closes the db connection a second time in a finally block.
+
+ The JVM switches the running thread back to Thread 2
+
+ Request 2 Thread 2 tries to use the db connection but fails
+ because Request 1 closed it.
+</pre>
+<p>
+Here is an example of properly written code to use a database connection
+obtained from a connection pool:
+</p>
+<pre>
+ Connection conn = null;
+ Statement stmt = null; // Or PreparedStatement if needed
+ ResultSet rs = null;
+ try {
+ conn = ... get connection from connection pool ...
+ stmt = conn.createStatement("select ...");
+ rs = stmt.executeQuery();
+ ... iterate through the result set ...
+ rs.close();
+ rs = null;
+ stmt.close();
+ stmt = null;
+ conn.close(); // Return to connection pool
+ conn = null; // Make sure we don't close it twice
+ } catch (SQLException e) {
+ ... deal with errors ...
+ } finally {
+ // Always make sure result sets and statements are closed,
+ // and the connection is returned to the pool
+ if (rs != null) {
+ try { rs.close(); } catch (SQLException e) { ; }
+ rs = null;
+ }
+ if (stmt != null) {
+ try { stmt.close(); } catch (SQLException e) { ; }
+ stmt = null;
+ }
+ if (conn != null) {
+ try { conn.close(); } catch (SQLException e) { ; }
+ conn = null;
+ }
+ }
+</pre>
+
+</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
+ <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.
+</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="JNDI Resource Naming and Realm Interaction"><!--()--></a><a name="JNDI_Resource_Naming_and_Realm_Interaction"><strong>JNDI Resource Naming and Realm Interaction</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+ In order to get Realms to work, the realm must refer to the datasource as
+ defined in the <GlobalNamingResources> or <Context> section, not a datasource as renamed
+ using <ResourceLink>.
+</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jndi-resources-howto.html b/webapps/docs/jndi-resources-howto.html
new file mode 100644
index 0000000..1e44b0b
--- /dev/null
+++ b/webapps/docs/jndi-resources-howto.html
@@ -0,0 +1,985 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 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">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 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">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>
+
+<p>The following elements may be used in the web application deployment
+descriptor (<code>/WEB-INF/web.xml</code>) of your web application to define
+resources:</p>
+<ul>
+<li><code><strong><env-entry></strong></code> - Environment entry, a
+ single-value parameter that can be used to configure how the application
+ will operate.</li>
+<li><code><strong><resource-ref></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.</li>
+<li><code><strong><resource-env-ref></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
+ that do not require authentication information.</li>
+</ul>
+
+<p>Providing that Tomcat is able to identify an appropriate resource factory to
+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><Context></code></a> element or in the
+<a href="config/globalresources.html">
+<code><strong><GlobalNamingResources></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
+additional configuration information is required, additional Tomcat specific
+configuration must be specified before Tomcat can create the resource.
+Tomcat specific resource configuration is entered in
+the <a href="config/context.html"><code><Context></code></a> elements that
+can be specified in either <code>$CATALINA_BASE/conf/server.xml</code> or,
+preferably, the per-web-application context XML file
+(<code>META-INF/context.xml</code>).</p>
+
+<p>Tomcat specific resource configuration is performed using the following
+elements in the <a href="config/context.html"><code><Context></code></a>
+element:</p>
+
+<ul>
+<li><a href="config/context.html#Environment Entries"><Environment></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><env-entry></code> element in the web application
+ deployment descriptor).</li>
+<li><a href="config/context.html#Resource Definitions"><Resource></a> -
+ Configure the name and data type of a resource made available to the
+ application (equivalent to the inclusion of a
+ <code><resource-ref></code> element in the web application
+ deployment descriptor).</li>
+<li><a href="config/context.html#Resource Links"><ResourceLink></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"><GlobalNamingResources></a>
+ child element of the <a href="config/server.html"><Server></a>
+ element.</li>
+<li><a href="config/context.html#Transaction"><Transaction></a> -
+ Add a resource factory for instantiating the UserTransaction object
+ instance that is available at <code>java:comp/UserTransaction</code>.</li>
+
+</ul>
+
+<p>Any number of these elements may be nested inside a
+<a href="config/context.html"><code><Context></code></a> element and will
+be associated only with that particular web application.</p>
+
+<p>If a resource has been defined in a
+<a href="config/context.html"><code><Context></code></a> element 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>
+
+<p>Where the same resource name has been defined for a
+<code><env-entry></code> element included in the web application
+deployment descriptor (<code>/WEB-INF/web.xml</code>) and in an
+<code><Environment></code> element as part of the
+<a href="config/context.html"><code><Context></code></a> element for the
+web application, the values in the deployment descriptor will take precedence
+<strong>only</strong> if allowed by the corresponding
+<code><Environment></code> element (by setting the <code>override</code>
+attribute to "true").</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="Global configuration"><!--()--></a><a name="Global_configuration"><strong>Global configuration</strong></a></font></td></tr><tr><td><blockquote>
+
+<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><GlobalNamingResources></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"><ResourceLink></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"><ResourceLink></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>
+
+</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 resources"><!--()--></a><a name="Using_resources"><strong>Using resources</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The <code>InitialContext</code> is configured as a web application is
+initially deployed, and is made available to web application components (for
+read-only access). All configured entries and resources are placed in
+the <code>java:comp/env</code> portion of the JNDI namespace, so a typical
+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
+Context initCtx = new InitialContext();
+Context envCtx = (Context) initCtx.lookup("java:comp/env");
+
+// Look up our data source
+DataSource ds = (DataSource)
+ envCtx.lookup("jdbc/EmployeeDB");
+
+// 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>
+
+</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 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><Context></code></a> element)
+ without modifying the web application or the deployment descriptor. Each
+ subsection below details the configuration and usage of the standard resource
+ factories.</p>
+
+ <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.</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 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>
+
+ <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>
+
+ <p>The steps required to use this facility are described below.</p>
+
+ <h3>1. Create Your JavaBean Class</h3>
+
+ <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;
+
+public class MyBean {
+
+ private String foo = "Default Foo";
+
+ public String getFoo() {
+ return (this.foo);
+ }
+
+ public void setFoo(String foo) {
+ this.foo = foo;
+ }
+
+ private int bar = 0;
+
+ public int getBar() {
+ return (this.bar);
+ }
+
+ public void setBar(int bar) {
+ this.bar = bar;
+ }
+
+
+}
+</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>2. Declare Your Resource Requirements</h3>
+
+ <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><resource-env-ref></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>
+<resource-env-ref>
+ <description>
+ Object factory for MyBean instances.
+ </description>
+ <resource-env-ref-name>
+ bean/MyBeanFactory
+ </resource-env-ref-name>
+ <resource-env-ref-type>
+ com.mycompany.MyBean
+ </resource-env-ref-type>
+</resource-env-ref>
+</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><strong>WARNING</strong> - Be sure you respect the element ordering
+ that is required by the DTD for web application deployment descriptors!
+ See the
+ <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>
+
+ <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();
+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>
+
+ <h3>4. Configure Tomcat's Resource Factory</h3>
+
+ <p>To configure Tomcat's resource factory, add an element like this to the
+ <a href="config/context.html"><code><Context></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>
+<Context ...>
+ ...
+ <Resource name="bean/MyBeanFactory" auth="Container"
+ type="com.mycompany.MyBean"
+ factory="org.apache.naming.factory.BeanFactory"
+ bar="23"/>
+ ...
+</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>
+
+ <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>
+ must match the value specified in the web application deployment
+ descriptor. We are also initializing the value of the <code>bar</code>
+ property, which will cause <code>setBar(23)</code> to be called before
+ the new bean is returned. Because we are not initializing the
+ <code>foo</code> property (although we could have), the bean will
+ contain whatever default value is set up by its constructor.</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>
+
+ <p>UserDatabase resources are typically configured as global resources for
+ use by a UserDatabase realm. Tomcat includes a UserDatabaseFactoory 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>
+
+ <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>
+<?xml version='1.0' encoding='utf-8'?>
+<tomcat-users>
+ <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"/>
+</tomcat-users>
+</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>2. Declare Your Resource</h3>
+
+ <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
+ 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>
+<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" />
+</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 <code>pathname</code> attribute can be absolute or relative. 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
+ written it will inherit the default file permissions for the user Tomcat
+ is running as. Ensure that these are appropriate to maintain the security
+ of your installation.</p>
+
+ <h3>3. Configure the Realm</h3>
+
+ <p>Configure a UserDatabase Realm to use this resource as described in the
+ <a href="config/realm.html">Realm configuration documentation</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="JavaMail Sessions"><!--()--></a><a name="JavaMail_Sessions"><strong>JavaMail Sessions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>0. Introduction</h3>
+
+ <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
+ 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 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
+ email server configuration environment - it simply asks for, and receives,
+ a preconfigured session whenever needed.</p>
+
+ <p>The steps required for this are outlined below.</p>
+
+ <h3>1. Declare Your Resource Requirements</h3>
+
+ <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
+ which you will look up preconfigured sessions. By convention, all such
+ names should resolve to the <code>mail</code> subcontext (relative to the
+ 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>
+<resource-ref>
+ <description>
+ Resource reference to a factory for javax.mail.Session
+ instances that may be used for sending electronic mail
+ messages, preconfigured to connect to the appropriate
+ SMTP server.
+ </description>
+ <res-ref-name>
+ mail/Session
+ </res-ref-name>
+ <res-type>
+ javax.mail.Session
+ </res-type>
+ <res-auth>
+ Container
+ </res-auth>
+</resource-ref>
+</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><strong>WARNING</strong> - Be sure you respect the element ordering
+ that is required by the DTD for web application deployment descriptors!
+ See the
+ <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>
+
+ <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();
+Context envCtx = (Context) initCtx.lookup("java:comp/env");
+Session session = (Session) envCtx.lookup("mail/Session");
+
+Message message = new MimeMessage(session);
+message.setFrom(new InternetAddress(request.getParameter("from")));
+InternetAddress to[] = new InternetAddress[1];
+to[0] = new InternetAddress(request.getParameter("to"));
+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>
+
+ <p>Note that the application uses the same resource reference name
+ that was declared in the web application deployment descriptor. This
+ is matched up against the resource factory that is configured in the
+ <a href="config/context.html"><code><Context></code></a> element
+ for the web application as described below.</p>
+
+ <h3>3. Configure Tomcat's Resource Factory</h3>
+
+ <p>To configure Tomcat's resource factory, add an elements like this to the
+ <a href="config/context.html"><code><Context></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>
+<Context ...>
+ ...
+ <Resource name="mail/Session" auth="Container"
+ type="javax.mail.Session"
+ mail.smtp.host="localhost"/>
+ ...
+</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>
+
+ <p>Note that the resource name (here, <code>mail/Session</code>) must
+ match the value specified in the web application deployment descriptor.
+ Customize the value of the <code>mail.smtp.host</code> parameter to
+ point at the server that provides SMTP service for your network.</p>
+
+ <p>Additional resource attributes and values will be converted to properties
+ and values and passed to
+ <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>
+
+ <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>
+
+ <p><a href="http://www.oracle.com/technetwork/java/index-138643.html">
+ 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>
+
+ <h3>5. Restart Tomcat</h3>
+
+ <p>For the additional JAR to be visible to Tomcat, it is necessary for the
+ Tomcat instance to be restarted.</p>
+
+
+ <h3>Example Application</h3>
+
+ <p>The <code>/examples</code> application included with Tomcat contains
+ an example of utilizing this resource factory. It is accessed via the
+ "JSP Examples" link. The source code for the servlet that actually
+ sends the mail message is in
+ <code>/WEB-INF/classes/SendMailServlet.java</code>.</p>
+
+ <p><strong>WARNING</strong> - The default configuration assumes that there
+ is an SMTP server listing on port 25 on <code>localhost</code>. If this is
+ not the case, edit the
+ <a href="config/context.html"><code><Context></code></a> element for
+ this web application and modify the parameter value for the
+ <code>mail.smtp.host</code> parameter to be the host name of an SMTP server
+ on your network.</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="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>
+
+ <p>Many web applications need to access a database via a JDBC driver,
+ 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 offers exactly
+ the same support, so that database-based applications you develop on
+ 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> -
+ Home page for information about Java Database Connectivity.</li>
+ <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 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
+ is based on the <strong>DBCP</strong> connection pool from the
+ <a href="http://commons.apache.org/">Commons</a>
+ 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>
+
+ <h3>1. Install Your JDBC Driver</h3>
+
+ <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
+ classes and to your web application. This is most easily accomplished by
+ installing the driver's JAR file(s) into the
+ <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>
+
+ <p>Next, modify the web application deployment descriptor
+ (<code>/WEB-INF/web.xml</code>) to declare the JNDI name under
+ which you will look up preconfigured data source. By convention, all such
+ names should resolve to the <code>jdbc</code> subcontext (relative to the
+ 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>
+<resource-ref>
+ <description>
+ 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 <Context>
+ configurartion for the web application.
+ </description>
+ <res-ref-name>
+ jdbc/EmployeeDB
+ </res-ref-name>
+ <res-type>
+ javax.sql.DataSource
+ </res-type>
+ <res-auth>
+ Container
+ </res-auth>
+</resource-ref>
+</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><strong>WARNING</strong> - Be sure you respect the element ordering
+ that is required by the DTD for web application deployment descriptors!
+ See the
+ <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>
+
+ <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();
+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>
+
+ <p>Note that the application uses the same resource reference name that was
+ declared in the web application deployment descriptor. This is matched up
+ against the resource factory that is configured in the
+ <a href="config/context.html"><code><Context></code></a> element for
+ the web application as described below.</p>
+
+ <h3>4. Configure Tomcat's Resource Factory</h3>
+
+ <p>To configure Tomcat's resource factory, add an element like this to the
+ <a href="config/context.html"><code><Context></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>
+<Context ...>
+ ...
+ <Resource name="jdbc/EmployeeDB"
+ auth="Container"
+ type="javax.sql.DataSource"
+ username="dbusername"
+ password="dbpassword"
+ driverClassName="org.hsql.jdbcDriver"
+ url="jdbc:HypersonicSQL:database"
+ maxActive="8"
+ maxIdle="4"/>
+ ...
+</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>
+
+ <p>Note that the resource name (here, <code>jdbc/EmployeeDB</code>) must
+ match the value specified in the web application deployment descriptor.</p>
+
+ <p>This example assumes that you are using the HypersonicSQL database
+ JDBC driver. Customize the <code>driverClassName</code> and
+ <code>driverName</code> parameters to match your actual database's
+ JDBC driver and connection URL.</p>
+
+ <p>The configuration properties for Tomcat's standard data source
+ resource factory
+ (<code>org.apache.tomcat.dbcp.dbcp.BasicDataSourceFactory</code>) are
+ as follows:</p>
+ <ul>
+ <li><strong>driverClassName</strong> - Fully qualified Java class name
+ of the JDBC driver to be used.</li>
+ <li><strong>username</strong> - Database username to be passed to our
+ JDBC driver.</li>
+ <li><strong>password</strong> - Database password to be passed to our
+ JDBC driver.</li>
+ <li><strong>url</strong> - Connection URL to be passed to our JDBC driver.
+ (For backwards compatibility, the property <code>driverName</code>
+ is also recognized.)</li>
+ <li><strong>initialSize</strong> - The initial number of connections
+ that will be created in the pool during pool initialization. Default: 0</li>
+ <li><strong>maxActive</strong> - The maximum number of connections
+ that can be allocated from this pool at the same time. Default: 8</li>
+ <li><strong>minIdle</strong> - The minimum number of connections that
+ will sit idle in this pool at the same time. Default: 0</li>
+ <li><strong>maxIdle</strong> - The maximum number of connections that
+ can sit idle in this pool at the same time. Default: 8</li>
+ <li><strong>maxWait</strong> - 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: -1 (infinite)</li>
+ </ul>
+ <p>Some additional properties handle connection validation:</p>
+ <ul>
+ <li><strong>validationQuery</strong> - SQL query that can be used by the
+ pool to validate connections before they are returned to the
+ application. If specified, this query MUST be an SQL SELECT
+ statement that returns at least one row.</li>
+ <li><strong>validationQueryTimeout</strong> - Timeout in seconds
+ for the validation query to return. Default: -1 (infinite)</li>
+ <li><strong>testOnBorrow</strong> - true or false: whether a connection
+ should be validated using the validation query each time it is
+ borrowed from the pool. Default: true</li>
+ <li><strong>testOnReturn</strong> - true or false: whether a connection
+ should be validated using the validation query each time it is
+ 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
+ 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>
+ <p>The evictor is disabled by default and can be configured using
+ the following properties:</p>
+ <ul>
+ <li><strong>timeBetweenEvictionRunsMillis</strong> - The number of
+ 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
+ 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
+ by the evictor. Default: 30*60*1000 (30 minutes)</li>
+ <li><strong>testWhileIdle</strong> - true or false: whether a connection
+ should be validated by the evictor thread using the validation query
+ while sitting idle in the pool. Default: false</li>
+ </ul>
+ <p>Another optional feature is the removal of abandoned connections.
+ A connection is called abandoned if the application does not return it
+ to the pool for a long time. The pool can close such connections
+ automatically and remove them from the pool. This is a workaround
+ for applications leaking connections.</p>
+ <p>The abandoning feature is disabled by default and can be configured
+ using the following properties:</p>
+ <ul>
+ <li><strong>removeAbandoned</strong> - true or false: whether to
+ remove abandoned connections from the pool. Default: false</li>
+ <li><strong>removeAbandonedTimeout</strong> - The number of
+ seconds after which a borrowed connection is assumed to be abandoned.
+ Default: 300</li>
+ <li><strong>logAbandoned</strong> - true or false: whether to log
+ stack traces for application code which abandoned a statement
+ or connection. This adds serious overhead. Default: false</li>
+ </ul>
+ <p>Finally there are various properties that allow further fine tuning
+ of the pool behaviour:</p>
+ <ul>
+ <li><strong>defaultAutoCommit</strong> - true or false: default
+ auto-commit state of the connections created by this pool.
+ Default: true</li>
+ <li><strong>defaultReadOnly</strong> - true or false: default
+ read-only state of the connections created by this pool.
+ Default: false</li>
+ <li><strong>defaultTransactionIsolation</strong> - This sets the
+ default transaction isolation level. Can be one of
+ <code>NONE</code>, <code>READ_COMMITTED</code>,
+ <code>READ_UNCOMMITTED</code>, <code>REPEATABLE_READ</code>,
+ <code>SERIALIZABLE</code>. Default: no default set</li>
+ <li><strong>poolPreparedStatements</strong> - true or false: whether to
+ pool PreparedStatements and CallableStatements. Default: false</li>
+ <li><strong>maxOpenPreparedStatements</strong> - The maximum number of open
+ statements that can be allocated from the statement pool at the same time.
+ Default: -1 (unlimited)</li>
+ <li><strong>defaultCatalog</strong> - The name of the default catalog.
+ Default: not set</li>
+ <li><strong>connectionInitSqls</strong> - A list of SQL statements
+ run once after a Connection is created. Separate multiple statements
+ by semicolons (<code>;</code>). Default: no statement</li>
+ <li><strong>connectionProperties</strong> - A list of driver specific
+ properties passed to the driver for creating connections. Each
+ property is given as <code>name=value</code>, multiple properties
+ are separated by semicolons (<code>;</code>). Default: no properties</li>
+ <li><strong>accessToUnderlyingConnectionAllowed</strong> - true or false: whether
+ accessing the underlying connections is allowed. Default: false</li>
+ </ul>
+ <p>For more details, please refer to the commons-dbcp documentation.</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="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, and then configure the use
+ of this factory in the
+ <a href="config/context.html"><code><Context></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
+ above.</p>
+
+ <h3>1. Write A Resource Factory Class</h3>
+
+ <p>You must write a class that implements the JNDI service provider
+ <code>javax.naming.spi.ObjectFactory</code> inteface. 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>
+ <ul>
+ <li><strong>Object obj</strong> - The (possibly null) object containing
+ location or reference information that can be used in creating an object.
+ For Tomcat, this will always be an object of type
+ <code>javax.naming.Reference</code>, which contains the class name of
+ this factory class, as well as the configuration properties (from the
+ <a href="config/context.html"><code><Context></code></a> for the
+ web application) to use in creating objects to be returned.</li>
+ <li><strong>Name name</strong> - The name to which this factory is bound
+ relative to <code>nameCtx</code>, or <code>null</code> if no name
+ is specified.</li>
+ <li><strong>Context nameCtx</strong> - The context relative to which the
+ <code>name</code> parameter is specified, or <code>null</code> if
+ <code>name</code> is relative to the default initial context.</li>
+ <li><strong>Hashtable environment</strong> - The (possibly null)
+ environment that is used in creating this object. This is generally
+ ignored in Tomcat object factories.</li>
+ </ul>
+
+ <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;
+
+import java.util.Enumeration;
+import java.util.Hashtable;
+import javax.naming.Context;
+import javax.naming.Name;
+import javax.naming.NamingException;
+import javax.naming.RefAddr;
+import javax.naming.Reference;
+import javax.naming.spi.ObjectFactory;
+
+public class MyBeanFactory implements ObjectFactory {
+
+ public Object getObjectInstance(Object obj,
+ Name name, Context nameCtx, Hashtable environment)
+ throws NamingException {
+
+ // Acquire an instance of our specified bean class
+ MyBean bean = new MyBean();
+
+ // Customize the bean properties from our attributes
+ Reference ref = (Reference) obj;
+ Enumeration addrs = ref.getAll();
+ while (addrs.hasMoreElements()) {
+ RefAddr addr = (RefAddr) addrs.nextElement();
+ String name = addr.getType();
+ String value = (String) addr.getContent();
+ if (name.equals("foo")) {
+ bean.setFoo(value);
+ } else if (name.equals("bar")) {
+ try {
+ bean.setBar(Integer.parseInt(value));
+ } catch (NumberFormatException e) {
+ throw new NamingException("Invalid 'bar' value " + value);
+ }
+ }
+ }
+
+ // Return the customized instance
+ return (bean);
+
+ }
+
+}
+</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>In this example, we are unconditionally creating a new instance of
+ the <code>com.mycompany.MyBean</code> class, and populating its properties
+ based on the parameters included in the <code><ResourceParams></code>
+ element that configures this factory (see below). You should note that any
+ parameter named <code>factory</code> should be skipped - that parameter is
+ used to specify the name of the factory class itself (in this case,
+ <code>com.mycompany.MyBeanFactory</code>) rather than a property of the
+ 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>
+
+ <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,
+ place the factory class (and the corresponding bean class) unpacked under
+ <code>$CATALINA_HOME/lib</code>, or in a JAR file inside
+ <code>$CATALINA_HOME/lib</code>. In this way, the required class
+ files are visible to both Catalina internal resources and your web
+ application.</p>
+
+ <h3>2. Declare Your Resource Requirements</h3>
+
+ <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><resource-env-ref></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>
+<resource-env-ref>
+ <description>
+ Object factory for MyBean instances.
+ </description>
+ <resource-env-ref-name>
+ bean/MyBeanFactory
+ </resource-env-ref-name>
+ <resource-env-ref-type>
+ com.mycompany.MyBean
+ </resource-env-ref-type>
+<resource-env-ref>
+</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><strong>WARNING</strong> - Be sure you respect the element ordering
+ that is required by the DTD for web application deployment descriptors!
+ See the
+ <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>
+
+ <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();
+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>
+
+ <h3>4. Configure Tomcat's Resource Factory</h3>
+
+ <p>To configure Tomcat's resource factory, add an elements like this to the
+ <a href="config/context.html"><code><Context></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>
+<Context ...>
+ ...
+ <Resource name="bean/MyBeanFactory" auth="Container"
+ type="com.mycompany.MyBean"
+ factory="com.mycompany.MyBeanFactory"
+ bar="23"/>
+ ...
+</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>
+
+ <p>Note that the resource name (here, <code>bean/MyBeanFactory</code>
+ must match the value specified in the web application deployment
+ descriptor. We are also initializing the value of the <code>bar</code>
+ property, which will cause <code>setBar(23)</code> to be called before
+ the new bean is returned. Because we are not initializing the
+ <code>foo</code> property (although we could have), the bean will
+ contain whatever default value is set up by its constructor.</p>
+
+ <p>You will also note that, from the application developer's perspective,
+ the declaration of the resource environment reference, and the programming
+ used to request new instances, is identical to the approach used for the
+ <em>Generic JavaBean Resources</em> example. This illustrates one of the
+ advantages of using JNDI resources to encapsulate functionality - you can
+ change the underlying implementation without necessarily having to
+ modify applications using the resources, as long as you maintain
+ compatible APIs.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/jspapi/index.html b/webapps/docs/jspapi/index.html
new file mode 100644
index 0000000..4a73392
--- /dev/null
+++ b/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/webapps/docs/logging.html b/webapps/docs/logging.html
new file mode 100644
index 0000000..040a6fc
--- /dev/null
+++ b/webapps/docs/logging.html
@@ -0,0 +1,593 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 — 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>
+ Logging in Apache Tomcat is implemented with the help of
+ <a href="http://commons.apache.org/logging">Apache Commons Logging</a>
+ library. That library is a thin wrapper above different logging
+ frameworks. It provides Tomcat with the ability to log
+ hierarchically across various log levels without the need to rely on a
+ particular logging implementation.
+ </p>
+
+ <p>
+ Since Tomcat 6.0, Tomcat uses a private package-renamed implementation of
+ Apache Commons Logging, to allow web applications to use their own
+ independent copies of the original Apache Commons Logging library.
+ In the default distribution this private copy of the library
+ is simplified and hardcoded to use the <code>java.util.logging</code> framework.
+ </p>
+
+ <p>
+ To configure Tomcat to use alternative logging frameworks for its internal
+ 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.
+ </p>
+
+ <p>
+ A web application running on Apache Tomcat can:
+ </p>
+ <ul>
+ <li>
+ Use system logging API, <code>java.util.logging</code>.
+ </li>
+ <li>
+ Use the logging API provided by the Java Servlets specification,
+ <code>javax.servlet.ServletContext.log(...)</code>
+ </li>
+ <li>
+ Use any logging framework of its choice.
+ </li>
+ </ul>
+
+ <p>
+ The logging frameworks used by different web applications run independently
+ of each other. See <a href="class-loader-howto.html">class loading</a>
+ for more details.
+ The exception to this rule is <code>java.util.logging</code>, if it used
+ directly or indirectly by your logging library. That is because it is loaded
+ by the system and is shared across web applications.
+ </p>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Java logging API %E2%80%94 java.util.logging"><!--()--></a><a name="Java_logging_API_%E2%80%94_java.util.logging"><strong>Java logging API — java.util.logging</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ Apache Tomcat has its own implementation of several key elements of
+ <code>java.util.logging</code> API. This implementation is called "JULI".
+ The key component there is a custom LogManager implementation,
+ that is aware of different web applications running on Tomcat (and
+ their different class loaders). It supports private per-application
+ logging configurations. It is also notified by Tomcat when a web application
+ is unloaded from memory, so that the references to its classes can be
+ cleared, preventing memory leaks.
+ </p>
+
+ <p>
+ This <code>java.util.logging</code> implementation is enabled by providing
+ certain system properties when starting Java. The Apache Tomcat startup
+ scripts do this for you, but if you are using different tools to run
+ Tomcat (such as jsvc, or running Tomcat from within an IDE), you should
+ take care of them by yourself.
+ </p>
+
+ <p>
+ More details about java.util.logging may be found in the documentation
+ for your JDK and on its Javadoc pages for the <code>java.util.logging</code>
+ package.
+ </p>
+
+ <p>
+ More details about Tomcat JULI may be found below.
+ </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="Servlets logging API"><!--()--></a><a name="Servlets_logging_API"><strong>Servlets logging API</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ The calls to <code>javax.servlet.ServletContext.log(...)</code> to write
+ 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>
+ <p>
+ This logging is performed according to the Tomcat logging configuration. You
+ cannot overwrite it in a web application.
+ </p>
+
+ <p>
+ The Servlets logging API predates the <code>java.util.logging</code> API
+ that is now provided by Java. As such, it does not offer you much options.
+ E.g., you cannot control the log levels. It can be noted, though, that
+ in Apache Tomcat implementation the calls to <code>ServletContext.log(String)</code>
+ 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.
+ </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="Console"><strong>Console</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ When running Tomcat on unixes, the console output is usually redirected
+ to the file named <code>catalina.out</code>. The name is configurable
+ using an environment variable. (See the startup scripts).
+ Whatever is written to <code>System.err/out</code> will be caught into
+ that file. That may include:
+ </p>
+
+ <ul>
+ <li>Uncaught exceptions printed by <code>java.lang.ThreadGroup.uncaughtException(..)</code></li>
+ <li>Thread dumps, if you requested them via a system signal</li>
+ </ul>
+
+ <p>
+ When running as a service on Windows, the console output is also caught
+ and redirected, but the file names are different.
+ </p>
+
+ <p>
+ The default logging configuration in Apache Tomcat writes the same
+ messages to the console and to a log file. This is great when using
+ Tomcat for development, but usually is not needed in production.
+ </p>
+
+ <p>
+ Old applications that still use <code>System.out</code> or <code>System.err</code>
+ can be tricked by setting <code>swallowOutput</code> attribute on a
+ <a href="config/context.html">Context</a>. If the attribute is set to
+ <code>true</code>, the calls to <code>System.out/err</code> during request
+ processing will be intercepted, and their output will be fed to the
+ logging subsystem using the
+ <code>javax.servlet.ServletContext.log(...)</code> calls.<br>
+ <strong>Note</strong>, that the <code>swallowOutput</code> feature is
+ actually a trick, and it has its limitations.
+ It works only with direct calls to <code>System.out/err</code>,
+ and only during request processing cycle. It may not work in other
+ threads that might be created by the application. It cannot be used to
+ intercept logging frameworks that themselves write to the system streams,
+ as those start early and may obtain a direct reference to the streams
+ before the redirection takes place.
+ </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 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.
+ </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="Using java.util.logging (default)"><!--()--></a><a name="Using_java.util.logging_(default)"><strong>Using java.util.logging (default)</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ The default implementation of java.util.logging provided in the JDK is too
+ limited to be useful. A limitation of JDK Logging appears to be the
+ inability to have per-web application logging, as the configuration is
+ per-VM. As a result, Tomcat will, in the default configuration, replace the
+ default LogManager implementation with a container friendly implementation
+ called JULI, which addresses these shortcomings. It supports the same
+ configuration mechanisms as the standard JDK java.util.logging, using either
+ a programmatic approach, or properties files. The main difference is that
+ per-classloader properties files can be set (which enables easy redeployment
+ friendly webapp configuration), and the properties files support slightly
+ extended constructs which allows more freedom for defining handlers and
+ assigning them to loggers.
+ </p>
+ <p>
+ 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:
+ <ul>
+ <li>Globally. That is usually done in the
+ <code>${catalina.base}/conf/logging.properties</code> file.
+ The file is specified by the <code>java.util.logging.config.file</code>
+ System property which is set by the startup scripts.
+ If it is not readable or is not configured, the default is to use the
+ <code>${java.home}/lib/logging.properties</code> file in the JRE.
+ </li>
+ <li>In the web application. The file will be
+ <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.
+ The default <code>conf/logging.properties</code> in Apache Tomcat also
+ adds several <code>FileHandler</code>s that write to files.
+ </p>
+ <p>
+ A handler's log level threshold is INFO by default and can be set using
+ SEVERE, WARNING, INFO, CONFIG, FINE, FINER, FINEST or ALL.
+ You can also target specific packages to collect logging from and specify
+ a level.
+ </p>
+ <p>
+ Here is how you would set debugging from Tomcat. You would need to ensure the
+ ConsoleHandler's (or FileHandler's') level is also set to collect this threshold,
+ 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>
+ <p>
+ The configuration used by JULI is extremely similar to the one supported by
+ plain <code>java.util.logging</code>, but uses a few
+ extensions to allow better flexibility in assigning loggers. The main
+ differences are:
+ </p>
+ <ul>
+ <li>A prefix may be added to handler names, so that multiple handlers of a
+ single class may be instantiated. A prefix is a String which starts with a
+ digit, and ends with '.'. For example, <code>22foobar.</code> is a valid
+ prefix.</li>
+ <li>System property replacement is performed for property values which
+ contain ${systemPropertyName}.</li>
+ <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
+ <code>loggerName.useParentHandlers</code> property, which accepts a
+ boolean value.</li>
+ <li>The root logger can define its set of handlers using the
+ <code>.handlers</code> property.</li>
+ </ul>
+ <p>
+ There are several additional implementation classes, that can be used
+ together with the ones provided by Java. The notable one is
+ <code>org.apache.juli.FileHandler</code>.
+ </p>
+ <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. The value of <code>0</code>
+ uses system default buffering (typically an 8K buffer will be used). A
+ value of <code><0</code> forces a writer flush upon each log write. A
+ value <code>>0</code> uses a BufferedOutputStream with the defined
+ value but note that the system default buffering will also be
+ applied.
+ </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, \
+ 2localhost.org.apache.juli.FileHandler, \
+ 3manager.org.apache.juli.FileHandler, \
+ java.util.logging.ConsoleHandler
+
+.handlers = 1catalina.org.apache.juli.FileHandler, java.util.logging.ConsoleHandler
+
+############################################################
+# Handler specific properties.
+# Describes specific configuration info for Handlers.
+############################################################
+
+1catalina.org.apache.juli.FileHandler.level = FINE
+1catalina.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+1catalina.org.apache.juli.FileHandler.prefix = catalina.
+
+2localhost.org.apache.juli.FileHandler.level = FINE
+2localhost.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+2localhost.org.apache.juli.FileHandler.prefix = localhost.
+
+3manager.org.apache.juli.FileHandler.level = FINE
+3manager.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+3manager.org.apache.juli.FileHandler.prefix = manager.
+3manager.org.apache.juli.FileHandler.bufferSize = 16384
+
+java.util.logging.ConsoleHandler.level = FINE
+java.util.logging.ConsoleHandler.formatter = java.util.logging.SimpleFormatter
+
+
+############################################################
+# Facility specific properties.
+# Provides extra control for each logger.
+############################################################
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].handlers = \
+ 2localhost.org.apache.juli.FileHandler
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/manager].handlers = \
+ 3manager.org.apache.juli.FileHandler
+
+# 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
+</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>
+ 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
+
+############################################################
+# Handler specific properties.
+# Describes specific configuration info for Handlers.
+############################################################
+
+org.apache.juli.FileHandler.level = FINE
+org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+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>
+
+ <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>
+ <ul>
+ <li>Apache Tomcat Javadoc for the
+ <a href="api/org/apache/juli/package-summary.html"><code>org.apache.juli</code></a>
+ package.
+ </li>
+ <li>Oracle Java 6 Javadoc for the
+ <a href="http://docs.oracle.com/javase/6/docs/api/java/util/logging/package-summary.html"><code>java.util.logging</code></a>
+ package.
+ </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="Considerations for productive usage"><!--()--></a><a name="Considerations_for_productive_usage"><strong>Considerations for productive usage</strong></a></font></td></tr><tr><td><blockquote>
+ <p>You may want to take note of the following:</p>
+ <ul>
+ <li><p>Consider removing <code>ConsoleHandler</code> from configuration.</p>
+ <p>By default (thanks to the <code>.handlers</code> setting) logging goes
+ both to a <code>FileHandler</code> and to a <code>ConsoleHandler</code>.
+ The output of the latter one is usually captured into a file, such as
+ <code>catalina.out</code>. Thus you end up with two copies of the same
+ messages.</p>
+ </li>
+ <li><p>Consider removing <code>FileHandler</code>s for the applications
+ that you do not use. E.g., the one for <code>host-manager</code>.</p></li>
+ <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>
+ </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="Using Log4j"><!--()--></a><a name="Using_Log4j"><strong>Using Log4j</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ This section explains how to configure Tomcat to use
+ <a href="http://logging.apache.org/log4j/">log4j</a> rather than
+ java.util.logging for all Tomcat's internal logging.
+ </p>
+ <p><em>Note</em>: The steps described in this section are needed
+ when you want to reconfigure Tomcat to use Apache log4j for its own
+ logging. These steps are <strong>not</strong> needed if you just want
+ to use log4j in your own web application. — In that case, just
+ put <code>log4j.jar</code> and <code>log4j.properties</code> into
+ <code>WEB-INF/lib</code> and <code>WEB-INF/classes</code>
+ of your web application.
+ </p>
+ <p>
+ The following steps describe configuring log4j to output Tomcat's
+ internal logging.
+ </p>
+
+ <ol>
+ <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
+
+# 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
+# Roll-over the log once per day
+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.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.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.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.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]=\
+ 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>
+ <ol start="2">
+ <li><a href="http://logging.apache.org/log4j">Download Log4J</a>
+ (v1.2 or later).</li>
+
+ <li><p>Download or build <code>tomcat-juli.jar</code> and
+ <code>tomcat-juli-adapters.jar</code> that are available as an "extras"
+ component for Tomcat. See <a href="extras.html">Additional Components
+ 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>
+ </li>
+
+ <li><p>If you want to configure Tomcat to use log4j globally:</p>
+ <ul>
+ <li>Put <code>log4j.jar</code> and
+ <code>tomcat-juli-adapters.jar</code> from "extras" into
+ <code>$CATALINA_HOME/lib</code>.</li>
+ <li>Replace <code>$CATALINA_HOME/bin/tomcat-juli.jar</code> with
+ <code>tomcat-juli.jar</code> from "extras".</li>
+ </ul>
+ </li>
+
+ <li><p>If you are running Tomcat with separate $CATALINA_HOME and
+ $CATALINA_BASE and want to configure to use log4j in a single
+ $CATALINA_BASE only:</p>
+ <ul>
+ <li>Create <code>$CATALINA_BASE/bin</code> and
+ <code>$CATALINA_BASE/lib</code> directories if they do not exist.
+ </li>
+ <li>Put <code>log4j.jar</code> and
+ <code>tomcat-juli-adapters.jar</code> from "extras" into
+ <code>$CATALINA_BASE/lib</code></li>
+ <li>Put <code>tomcat-juli.jar</code> from "extras" as
+ <code>$CATALINA_BASE/bin/tomcat-juli.jar</code></li>
+ <li>If you are running with a
+ <a href="security-manager-howto.html">security manager</a>, you
+ 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>
+ </ul>
+ </li>
+
+ <li><p>Delete <code>$CATALINA_BASE/conf/logging.properties</code> to
+ prevent java.util.logging generating zero length log files.</p></li>
+
+ <li><p>Start Tomcat</p></li>
+ </ol>
+
+ <p>
+ This log4j configuration mirrors the default java.util.logging setup
+ that ships with Tomcat: both the manager and host-manager apps get an
+ individual log file, and everything else goes to the "catalina.log" log
+ file. Each file is rolled-over once per day.
+ </p>
+
+ <p>
+ 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
+ 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
+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>
+
+ <p>
+ Be warned: a level of DEBUG will produce megabytes of logging and slow
+ startup of Tomcat. This level should be used sparingly when debugging of
+ internal Tomcat operations is required.
+ </p>
+
+ <p>
+ 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
+ <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.
+ </p>
+
+ <p><em>Additional notes</em></p>
+ <ul>
+ <li><p>This exposes log4j libraries to the web applications through the
+ Common classloader. See <a href="class-loader-howto.html">class loading</a>
+ documentation for details.</p>
+ <p>Because of that, the web applications and libraries using
+ <a href="http://commons.apache.org/logging">Apache Commons Logging</a>
+ 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
+ <code>${catalina.base}/conf/logging.properties</code> file is still
+ referenced by Tomcat startup scripts.</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>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/manager-howto.html b/webapps/docs/manager-howto.html
new file mode 100644
index 0000000..7804a1c
--- /dev/null
+++ b/webapps/docs/manager-howto.html
@@ -0,0 +1,1363 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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="#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="#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_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></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 server
+configuration file.</p>
+
+<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>
+<li>Deploy a new web application from the uploaded contents of a WAR file.</li>
+<li>Deploy a new web application, on a specified context path, from the
+ server file system.</li>
+<li>List the currently deployed web applications, as well as the
+ sessions that are currently active for those web apps.</li>
+<li>Reload an existing web application, to reflect changes in the
+ contents of <code>/WEB-INF/classes</code> or <code>/WEB-INF/lib</code>.
+ </li>
+<li>List the OS and JVM property values.</li>
+<li>List the available global JNDI resources, for use in deployment
+ tools that are preparing <code><ResourceLink></code> elements
+ nested in a <code><Context></code> deployment description.</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>
+<li>Undeploy a deployed web application and delete its document base
+ directory (unless it was deployed from file system).</li>
+</ul>
+
+<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>
+<Context privileged="true" antiResourceLocking="false"
+ docBase="${catalina.home}/webapps/manager">
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ allow="127\.0\.0\.1" />
+</Context>
+</pre>
+
+<p>If you have Tomcat configured to support multiple virtual hosts
+(websites) you would need to configure a Manager for each.</p>
+
+<p>There are three ways to use the <strong>Manager</strong> web application.</p>
+<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>
+<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">
+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
+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 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.</em></p>
+ </blockquote>
+
+<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 one of <strong>manager-**</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 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> — Access to the HTML interface.</li>
+ <li><strong>manager-status</strong> — Access to the "Server Status"
+ page only.</li>
+ <li><strong>manager-script</strong> — 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> — 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. To maintain
+the CSRF protection:</p>
+
+<ul>
+ <li>Users with the <strong>manager-gui</strong> role should not be granted
+ the <strong>manager-script</strong> or <strong>manager-jmx</strong>
+ roles.</li>
+ <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),
+ then all windows of the browser MUST be closed afterwards to terminate
+ the session.</li>
+</ul>
+
+<p>Note 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
+<strong>manager-**</strong> roles with it, or add a
+<strong>manager-**</strong> role
+to some existing username/password combination.
+As the majority of this document describes the commands of plain textual
+interface, let the role name for further example to be
+<strong>manager-script</strong>.
+Exactly how the usernames/passwords are configured depends on which
+<code>Realm</code> implementation you are using:</p>
+<ul>
+<li><em>MemoryRealm</em> — This one is configured in the default
+ <code>$CATALINA_BASE/conf/server.xml</code>.
+ If you have not configured it differently, or replaced it with
+ a different <code>Realm</code> implementation, this realm
+ reads an XML-format file stored at
+ <code>$CATALINA_BASE/conf/tomcat-users.xml</code>, which can be
+ edited with any text editor. This file contains an XML
+ <code><user></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>
+<user name="craigmcc" password="secret" roles="standard,manager-script" />
+</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>
+ 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 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 <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
+ <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 role <strong>manager-script</strong>.</p>
+
+<p>In addition to the password restrictions the Manager web application
+could 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>
+<Context privileged="true">
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ allow="127\.0\.0\.1"/>
+</Context>
+</pre>
+
+</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/text/{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>
+<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
+<code>{parameters}</code> represents the query parameters
+that are specific to that command. In the illustrations below, customize
+the host and port appropriately for your installation.</p>
+
+<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> -
+ It is not possible to perform administrative commands on the
+ Manager application itself.</li>
+<li><strong>version</strong> - The version of this web application as used by
+ the parallel deployment feature,</li>
+<li><strong>war</strong> - URL of a web application archive (WAR) file,
+ 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:
+ <ul>
+ <li><strong>file:/absolute/path/to/a/directory</strong> - The absolute
+ path of a directory that contains the unpacked version of a web
+ application. This directory will be attached to the context path
+ you specify without any changes.</li>
+ <li><strong>file:/absolute/path/to/a/webapp.war</strong> - The absolute
+ 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>
+ <li><strong>directory</strong> - The directory name for the web
+ application context in the Host's application base directory.</li>
+ <li><strong>webapp.war</strong> - The name of a web application war file
+ located in the Host's application base directory.</li>
+ </ul></li>
+</ul>
+
+<p>Each command will return a response in <code>text/plain</code> format
+(i.e. plain ASCII with no HTML markup), making it easy for both humans and
+programs to read). The first line of the response will begin with either
+<code>OK</code> or <code>FAIL</code>, indicating whether the requested
+command was successful or not. In the case of failure, the rest of the first
+line will contain a description of the problem that was encountered. Some
+commands include additional lines of information as described below.</p>
+
+<p><em>Internationalization Note</em> - The Manager application looks up
+its message strings in resource bundles, so it is possible that the strings
+have been translated for your platform. The examples below show the English
+version of the messages.</p>
+
+<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>
+
+<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/text/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>
+
+<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>
+
+<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>
+<ul>
+<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 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
+opposite of the <code>/undeploy</code> command.</p>
+
+<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>
+
+<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
+ for the new one. The <code>update</code> parameter may be specified as
+ 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><em>Encountered exception</em>
+ <blockquote>
+ <p>An exception was encountered trying to start the new web application.
+ 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>
+</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="Deploy A New Application from a Local Path"><!--()--></a><a name="Deploy_A_New_Application_from_a_Local_Path"><strong>Deploy A New Application from a Local Path</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Deploy and start a new web application, attached to the specified context
+<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>
+
+<h3>Deploy a previously deployed webapp</h3>
+
+<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;
+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/text/deploy?path=/footoo&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>
+
+
+<h3>Deploy a Directory or WAR by URL</h3>
+
+<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
+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
+the entire WAR file.</p>
+
+<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/text/deploy?path=/footoo&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>
+
+
+<p>In this example the ".war" file <code>/path/to/bar.war</code> on the
+Tomcat server is deployed as the web application 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>
+http://localhost:8080/manager/text/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>
+
+
+<h3>Deploy a Directory or War from the Host appBase</h3>
+
+<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>
+
+<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/text/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>
+
+
+<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/text/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>
+
+
+<h3>Deploy using a Context configuration ".xml" file</h3>
+
+<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
+".war" file or web application directory. The context <code>path</code>
+is not used when deploying a web application using a context ".xml"
+configuration file.</p>
+
+<p>A Context configuration ".xml" file can contain valid XML for a
+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>
+<Context path="/foobar" docBase="/path/to/application/foobar">
+</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>
+
+
+<p>When the optional <code>war</code> parameter is set to the URL
+for a web application ".war" file or directory it overrides any
+docBase configured in the context configuration ".xml" file.</p>
+
+<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/text/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>
+
+
+<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/text/deploy
+ ?config=file:/path/context.xml&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>
+
+
+<h3>Deployment Notes</h3>
+
+<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 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
+from deploying web applications using a configuration XML file and
+also prevents them from deploying application directories or ".war"
+files located outside of their Host appBase.</p>
+
+
+<h3>Deploy Response</h3>
+
+<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>
+
+<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
+ for the new one. The <code>update</code> parameter may be specified as
+ 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><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><em>Encountered exception</em>
+ <blockquote>
+ <p>An exception was encountered trying to start the new web application.
+ 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><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><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>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 the
+ Context path must match the directory name or war file name without
+ the ".war" extension.
+ </blockquote></li>
+<li><em>Only web applications in the Host web application directory can
+ be installed</em>
+ <blockquote>
+ 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>
+</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 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/text/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>
+
+<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>
+
+</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/text/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>
+
+<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
+updated classes or property files in the <code>/WEB-INF/classes</code>
+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>
+
+<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 logs for the details.</p>
+ </blockquote></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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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
+ <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
+ is deployed from an unpacked directory. If you are using a WAR file,
+ 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>
+</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/text/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>
+
+<p>Lists information about the Tomcat version, OS, and JVM properties.</p>
+
+<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>Encountered exception</em>
+ <blockquote>
+ <p>An exception was encountered trying to enumerate the system properties.
+ Check the Tomcat logs for the details.</p>
+ </blockquote></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/text/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>
+
+<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>
+request parameter, the value must be the fully qualified Java class name of
+the resource type you are interested in (for example, you would specify
+<code>javax.sql.DataSource</code> to acquire the names of all available
+JDBC data sources). If you do not specify the <code>type</code> request
+parameter, resources of all types will be returned.</p>
+
+<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>
+<p>or</p>
+<pre>
+ OK - Listed global resources of type xxxxx
+</pre>
+<p>followed by one line for each resource. Each line is composed of fields
+delimited by colon characters (":"), as follows:</p>
+<ul>
+<li><em>Global Resource Name</em> - The name of this global JNDI resource,
+ which would be used in the <code>global</code> attribute of a
+ <code><ResourceLink></code> element.</li>
+<li><em>Global Resource Type</em> - The fully qualified Java class name of
+ this global JNDI resource.</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>Encountered exception</em>
+ <blockquote>
+ <p>An exception was encountered trying to enumerate the global JNDI
+ resources. Check the Tomcat logs for the details.</p>
+ </blockquote></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>
+</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/text/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>
+
+<p>Display the default session timeout for a web application, and the
+number of currently active sessions that fall within ten-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
+Default maximum session inactive interval 30 minutes
+30 - <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>
+
+</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/text/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>
+
+<p>Signal a stopped application to restart, and make itself available again.
+Stopping and starting is useful, for example, if the database required by
+your application becomes temporarily unavailable. It is usually better to
+stop the web application that relies on this database rather than letting
+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>
+
+<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 logs for the details.</p>
+ </blockquote></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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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/text/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>
+
+<p>Signal an existing application to make itself unavailable, but leave it
+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 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>
+
+<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 logs for the details.</p>
+ </blockquote></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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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 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/text/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>
+
+<p><strong><font color="red">WARNING</font> - 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
+or from .WAR expansion as well as the XML Context definition from
+<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>
+
+<p>Signal an existing application to gracefully shut itself down, and
+remove it from Tomcat (which also makes this context path available for
+reuse later). In addition, the document root directory is removed, if it
+exists in the <code>appBase</code> directory (typically "webapps") for
+this virtual host. This command is the logical opposite of the
+<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>
+
+<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 logs for the details.</p>
+ </blockquote></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><em>No context path was specified</em>
+ <blockquote>
+ The <code>path</code> parameter is required.
+ </blockquote></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/text/findleaks[?statusLine=[true|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>
+
+<p><strong>The find leaks diagnostic triggers a full garbage collection. It
+should be used with extreme caution on production systems.</strong></p>
+
+<p>The find leaks diagnostic attempts to identify web applications that have
+caused memory leaks when they were stopped, reloaded or undeployed. Results
+should always be confirmed
+with a profiler. The diagnostic uses additional functionality provided by the
+StandardHost implementation. It will not work if a custom host is used that
+does not extend StandardHost.</p>
+
+<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>
+
+<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>
+
+<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,
+thus causing a memory leak, will be listed on a new line. If an application
+has been reloaded several times, it may be listed several times.</p>
+
+<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>
+
+<p>From this link , you can view information about the server.</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>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,
+ current thread count and current thread busy.</p></li>
+ <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.
+ Here is the list of the possible thread stages :</p>
+ <ul>
+ <li><p><em>"Parse and Prepare Request"</em> : The request headers are
+ being parsed or the necessary preparation to read the request body (if
+ a transfer encoding has been specified) is taking place.</p></li>
+ <li><p><em>"Service"</em> : The thread is processing a request and
+ generating the response. This stage follows the "Parse and Prepare
+ Request" stage and precedes the "Finishing" stage. There is always at
+ least one thread in this stage (the server-status page).</p></li>
+ <li><p><em>"Finishing"</em> : The end of the request processing. Any
+ remainder of the response still in the output buffers is sent to the
+ client. This stage is followed by "Keep-Alive" if it is appropriate to
+ keep the connection alive or "Ready" if "Keep-Alive" is not
+ 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 received, the next stage will br "Parse and Prepare Requst". 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
+ used.</p></li>
+ </ul>
+ </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="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 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>
+<li>Download the binary distribution of Ant from
+ <a href="http://ant.apache.org">http://ant.apache.org</a>.
+ 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
+ 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><taskdef></code> element. Therefore, your <code>build.xml</code>
+file might look something like this:</p>
+
+<table border="1">
+<tr><td><pre>
+<project name="My Application" default="compile" basedir=".">
+
+ <!-- Configure the directory into which the web application is built -->
+ <property name="build" value="${basedir}/build"/>
+
+ <!-- Configure the context path for this application -->
+ <property name="path" value="/myapp"/>
+
+ <!-- Configure properties to access the Manager application -->
+ <property name="url" value="http://localhost:8080/manager/text"/>
+ <property name="username" value="myusername"/>
+ <property name="password" value="mypassword"/>
+
+ <!-- Configure the custom Ant tasks for the Manager application -->
+ <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
+ <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
+ <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
+ <taskdef name="findleaks" classname="org.apache.catalina.ant.FindLeaksTask"/>
+ <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/>
+ <taskdef name="start" classname="org.apache.catalina.ant.StartTask"/>
+ <taskdef name="stop" classname="org.apache.catalina.ant.StopTask"/>
+ <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
+
+ <!-- Executable Targets -->
+ <target name="compile" description="Compile web application">
+ <!-- ... construct web application in ${build} subdirectory, and
+ generated a ${path}.war ... -->
+ </target>
+
+ <target name="deploy" description="Install web application"
+ depends="compile">
+ <deploy url="${url}" username="${username}" password="${password}"
+ path="${path}" war="file:${build}${path}.war"/>
+ </target>
+
+ <target name="reload" description="Reload web application"
+ depends="compile">
+ <reload url="${url}" username="${username}" password="${password}"
+ path="${path}"/>
+ </target>
+
+ <target name="undeploy" description="Remove web application">
+ <undeploy url="${url}" username="${username}" password="${password}"
+ path="${path}"/>
+ </target>
+
+</project>
+</pre></td></tr>
+</table>
+
+<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
+namespace.</p>
+
+<p>Now, you can execute commands like <code>ant deploy</code> to deploy the
+application to a running instance of Tomcat, or <code>ant reload</code> to
+tell Tomcat to reload it. Note also that most of the interesting values in
+this <code>build.xml</code> file are defined as replaceable properties, so
+you can override their values from the command line. For example, you might
+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>
+
+<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
+<code><redirector></code> type attributes:
+</p>
+
+<table border="1" cellpadding="2" cellspacing="0">
+<tbody>
+<tr>
+<td valign="top"><b>Attribute</b></td>
+<td valign="top"><b>Description</b></td>
+<td align="center" valign="top"><b>Required</b></td>
+</tr>
+<tr>
+<td valign="top">output</td>
+<td valign="top">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>
+</tr>
+<tr>
+<td valign="top">error</td>
+<td valign="top">The file to which the standard error of the
+command should be redirected.</td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">logError</td>
+<td valign="top">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>
+</tr>
+<tr>
+<td valign="top">append</td>
+<td valign="top">Whether output and error files should be
+appended to or overwritten. Defaults to <code>false</code>.</td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">createemptyfiles</td>
+<td valign="top">Whether output and error files should be created
+even when empty. Defaults to <code>true</code>.</td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">outputproperty</td>
+<td valign="top">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>
+</tr>
+<tr>
+<td valign="top">errorproperty</td>
+<td valign="top">The name of a property in which the standard
+error of the command should be stored.</td>
+<td align="center" valign="top">No</td>
+</tr>
+</tbody>
+</table>
+
+<p>A couple of additional attributes can also be specified:
+</p>
+<table border="1" cellpadding="2" cellspacing="0">
+<tbody>
+<tr>
+<td valign="top"><b>Attribute</b></td>
+<td valign="top"><b>Description</b></td>
+<td align="center" valign="top"><b>Required</b></td>
+</tr>
+<tr>
+<td valign="top">alwaysLog</td>
+<td valign="top">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><redirector></code>
+in Ant 1.6.3</em></td>
+<td align="center" valign="top">No</td>
+</tr>
+<tr>
+<td valign="top">failonerror</td>
+<td valign="top">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.
+<br>
+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>
+</tr>
+</tbody>
+</table>
+
+<p>They also support the embedded <code><redirector></code> element
+in which you can specify
+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
+<code><redirector></code> element attributes.
+</p>
+
+<p>
+Here is a sample build file extract that shows how this output redirection support
+can be used:
+</p>
+
+<table border="1">
+<tr><td><pre>
+ <target name="manager.deploy"
+ depends="context.status"
+ if="context.notInstalled">
+ <deploy url="${mgr.url}"
+ username="${mgr.username}"
+ password="${mgr.password}"
+ path="${mgr.context.path}"
+ config="${mgr.context.descriptor}"/>
+ </target>
+
+ <target name="manager.deploy.war"
+ depends="context.status"
+ if="context.deployable">
+ <deploy url="${mgr.url}"
+ username="${mgr.username}"
+ password="${mgr.password}"
+ update="${mgr.update}"
+ path="${mgr.context.path}"
+ war="${mgr.war.file}"/>
+ </target>
+
+ <target name="context.status">
+ <property name="running" value="${mgr.context.path}:running"/>
+ <property name="stopped" value="${mgr.context.path}:stopped"/>
+
+ <list url="${mgr.url}"
+ outputproperty="ctx.status"
+ username="${mgr.username}"
+ password="${mgr.password}">
+ </list>
+
+ <condition property="context.running">
+ <contains string="${ctx.status}" substring="${running}"/>
+ </condition>
+ <condition property="context.stopped">
+ <contains string="${ctx.status}" substring="${stopped}"/>
+ </condition>
+ <condition property="context.notInstalled">
+ <and>
+ <isfalse value="${context.running}"/>
+ <isfalse value="${context.stopped}"/>
+ </and>
+ </condition>
+ <condition property="context.deployable">
+ <or>
+ <istrue value="${context.notInstalled}"/>
+ <and>
+ <istrue value="${context.running}"/>
+ <istrue value="${mgr.update}"/>
+ </and>
+ <and>
+ <istrue value="${context.stopped}"/>
+ <istrue value="${mgr.update}"/>
+ </and>
+ </or>
+ </condition>
+ <condition property="context.undeployable">
+ <or>
+ <istrue value="${context.running}"/>
+ <istrue value="${context.stopped}"/>
+ </or>
+ </condition>
+ </target>
+</pre></td></tr>
+</table>
+
+<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,
+badly set Ant tasks depends chains may cause that a task be called
+more than once in the same Ant run, even if not intended to. A bit of caution should be exercised when you are
+capturing output from that task, because this could lead to something unexpected:</p>
+<ul>
+<li>when capturing in a property you will find in it only the output from the <em>first</em> call, because
+Ant properties are immutable and once set they cannot be changed,
+</li>
+<li>when capturing in a file, each run will overwrite it and you will find in it only the <em>last</em> call
+output, unless you are using the <code>append="true"</code> attribute, in which case you will
+see the output of each task call appended to the file.
+</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="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* -->
+ type=RequestProcessor</code> which will locate all
+ workers which can process requests and report
+ their state.
+ </li>
+ <li>
+ <code>qry=*%3Aj2eeType=Servlet%2c* -->
+ j2eeType=Servlet</code> which return all loaded servlets.
+ </li>
+ <li>
+ <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue -->
+ 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 Get command"><!--()--></a><a name="JMX_Get_command"><strong>JMX Get command</strong></a></font></td></tr><tr><td><blockquote>
+ 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:
+
+<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/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY
+</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>
+
+ You must provide the following parameters:
+ <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>
+
+ 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:
+
+<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/?get=java.lang:type=Memory&att=HeapMemoryUsage
+</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, if you only want the "used" key:
+
+<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/
+ ?get=java.lang:type=Memory&att=HeapMemoryUsage&key=used
+</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>
+
+ <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&att=MYATTRIBUTE&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
+ &att=debug&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
+ &att=debug&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>
+
+ <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 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/
+ ?invoke=BEANNAME&op=METHODNAME&ps=COMMASEPARATEDPARAMETERS
+</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, to call the <code>findConnectors()</code> method of the
+ <strong>Service</strong> use:</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/jmxproxy/
+ ?invoke=Catalina%3Atype%3DService&op=findConnectors&ps=
+</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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/maven-jars.html b/webapps/docs/maven-jars.html
new file mode 100644
index 0000000..5701051
--- /dev/null
+++ b/webapps/docs/maven-jars.html
@@ -0,0 +1,65 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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
+ 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>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/mbeans-descriptor-howto.html b/webapps/docs/mbeans-descriptor-howto.html
new file mode 100644
index 0000000..d565451
--- /dev/null
+++ b/webapps/docs/mbeans-descriptor-howto.html
@@ -0,0 +1,91 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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><style type="text/css">
+ code {background-color:rgb(224,255,255);padding:0 0.1em;}
+ code.attributeName, code.propertyName {background-color:transparent;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>MBean Descriptor 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-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>
+ <mbean name="LDAPRealm"
+ className="org.apache.catalina.mbeans.ClassNameMBean"
+ description="Custom LDAPRealm"
+ domain="Catalina"
+ group="Realm"
+ type="com.myfirm.mypackage.LDAPRealm">
+
+ <attribute name="className"
+ description="Fully qualified class name of the managed object"
+ type="java.lang.String"
+ writeable="false"/>
+
+ <attribute name="debug"
+ description="The debugging detail level for this component"
+ type="int"/>
+ .
+ .
+ .
+
+ </mbean>
+</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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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-descriptor-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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/monitoring.html b/webapps/docs/monitoring.html
new file mode 100644
index 0000000..c89245a
--- /dev/null
+++ b/webapps/docs/monitoring.html
@@ -0,0 +1,1155 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+ </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 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 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 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
+ to be on the same line. It is wrapped to be more readable. If Tomcat is
+ running as a Windows service, use its configuration dialog to set
+ 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>
+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>
+
+ <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>
+ -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>
+ </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>
+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>
+ </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>
+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>
+ <b>Tip</b>: The password file should be read-only and only accessible by the
+ operating system user Tomcat is running as.
+ </li>
+ </ol>
+ <p><strong>Note:</strong> The JSR 160 JMX-Adaptor opens a second data channel
+ on a random port. That is a problem when you have a local firewall installed.
+ To fix it, configure a <code>JmxRemoteLifecycleListener</code>, as described
+ in <a href="config/listeners.html">listeners</a> documentation.
+ </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="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>
+ <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
+ more readable. It has to be all on the same line, without spaces.</p>
+ <table border="1">
+ <tr><td><pre>
+<project name="Catalina Ant JMX"
+ xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
+ default="state"
+ basedir=".">
+ <property name="jmx.server.name" value="localhost" />
+ <property name="jmx.server.port" value="9012" />
+ <property name="cluster.server.address" value="192.168.1.75" />
+ <property name="cluster.server.port" value="9025" />
+
+ <target name="state" description="Show JMX Cluster state">
+ <jmx:open
+ host="${jmx.server.name}"
+ port="${jmx.server.port}"
+ username="controlRole"
+ password="tomcat"/>
+ <jmx:get
+ name=
+"Catalina:type=IDataSender,host=localhost,
+senderAddress=${cluster.server.address},senderPort=${cluster.server.port}"
+ attribute="connected"
+ resultproperty="IDataSender.backup.connected"
+ echo="false"
+ />
+ <jmx:get
+ name="Catalina:type=ClusterSender,host=localhost"
+ attribute="senderObjectNames"
+ resultproperty="senderObjectNames"
+ echo="false"
+ />
+ <!-- get current maxActiveSession from ClusterTest application
+ echo it to Ant output and store at
+ property <em>clustertest.maxActiveSessions.orginal</em>
+ -->
+ <jmx:get
+ name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
+ attribute="maxActiveSessions"
+ resultproperty="clustertest.maxActiveSessions.orginal"
+ echo="true"
+ />
+ <!-- set maxActiveSession to 100
+ -->
+ <jmx:set
+ name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
+ attribute="maxActiveSessions"
+ value="100"
+ type="int"
+ />
+ <!-- get all sessions and split result as delimiter <em>SPACE</em> for easy
+ access all session ids directly with Ant property sessions.[0..n].
+ -->
+ <jmx:invoke
+ name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
+ operation="listSessionIds"
+ resultproperty="sessions"
+ echo="false"
+ delimiter=" "
+ />
+ <!-- Access session attribute <em>Hello</em> from first session.
+ -->
+ <jmx:invoke
+ name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
+ operation="getSessionAttribute"
+ resultproperty="Hello"
+ echo="false"
+ >
+ <arg value="${sessions.0}"/>
+ <arg value="Hello"/>
+ </jmx:invoke>
+ <!-- Query for all application manager.of the server from all hosts
+ and bind all attributes from all found manager MBeans.
+ -->
+ <jmx:query
+ name="Catalina:type=Manager,*"
+ resultproperty="manager"
+ echo="true"
+ attributebinding="true"
+ />
+ <!-- echo the create properties -->
+<echo>
+senderObjectNames: ${senderObjectNames.0}
+IDataSender.backup.connected: ${IDataSender.backup.connected}
+session: ${sessions.0}
+manager.length: ${manager.length}
+manager.0.name: ${manager.0.name}
+manager.1.name: ${manager.1.name}
+hello: ${Hello}
+manager.ClusterTest.0.name: ${manager.ClusterTest.0.name}
+manager.ClusterTest.0.activeSessions: ${manager.ClusterTest.0.activeSessions}
+manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED:
+ ${manager.ClusterTest.0.counterSend_EVT_SESSION_EXPIRED}
+manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS:
+ ${manager.ClusterTest.0.counterSend_EVT_GET_ALL_SESSIONS}
+</echo>
+
+ </target>
+
+</project>
+</pre>
+ </td></tr>
+</table>
+ <p><b>import:</b> Import the JMX Accessor Project with
+ <em><import file="${CATALINA.HOME}/bin/catalina-tasks.xml" /></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>
+
+ </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMXAccessorOpenTask - JMX open connection task"><!--()--></a><a name="JMXAccessorOpenTask_-_JMX_open_connection_task"><strong>JMXAccessorOpenTask - JMX open connection task</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>url</td>
+ <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>host</td>
+ <td>Set the host, shortcut the very long URL syntax.
+ </td>
+ <td><code>localhost</code></td>
+ </tr>
+
+ <tr>
+ <td>port</td>
+ <td>Set the remote connection port
+ </td>
+ <td><code>8050</code></td>
+ </tr>
+
+ <tr>
+ <td>username</td>
+ <td>remote JMX connection user name.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>password</td>
+ <td>remote JMX connection password.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>Name of the internal connection reference. With this attribute you can
+ configure more the one connection inside the same Ant project.
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo the command usage (for access analysis or debugging)
+ </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.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>unless</td>
+ <td>Only execute if a property of the given name <b>not exists</b> in the current project.
+ </td>
+ <td></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:open
+ host="${jmx.server.name}"
+ port="${jmx.server.port}"
+ />
+</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>
+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>
+ <jmx:open
+ url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"
+ ref="jmx.server.9024"
+ username="controlRole"
+ password="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>
+</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
+<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>
+ <jmx:open
+ url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"
+ ref="jmx.server.9024"
+ username="controlRole"
+ password="tomcat"
+ if="jmx.if"
+ unless="jmx.unless"
+ />
+</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.
+</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>
+<p>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>attribute</td>
+ <td>Existing MBean attribute (see Tomcat MBean description above)
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+ <tr>
+ <td>resultproperty</td>
+ <td>Save result at this project property
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>delimiter</td>
+ <td>Split result with delimiter (java.util.StringTokenizier)
+ and use resultproperty as prefix to store tokens.
+ </td>
+ <td></td>
+ </tr>
+
+ <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>
+ <td><code>true</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:get
+ name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
+ attribute="maxActiveSessions"
+ resultproperty="servlets-examples.maxActiveSessions"
+ />
+</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>
+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>
+ <jmx:get
+ name="Catalina:type=ClusterSender,host=localhost"
+ attribute="senderObjectNames"
+ resultproperty="senderObjectNames"
+ />
+</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>
+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>
+ ${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>
+
+<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>
+ <jmx:query
+ failonerror="false"
+ name="Catalina:type=Cluster,host=${tomcat.application.host}"
+ resultproperty="cluster"
+ />
+ <jmx:get
+ name=
+"Catalina:type=IDataSender,host=${tomcat.application.host},
+senderAddress=${cluster.backup.address},senderPort=${cluster.backup.port}"
+ attribute="connected"
+ resultproperty="datasender.connected"
+ if="cluster.0.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>
+
+</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>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>attribute</td>
+ <td>Existing MBean attribute (see Tomcat MBean description above)
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>value</td>
+ <td>value that set to attribute
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>type</td>
+ <td>type of the attribute.
+ </td>
+ <td>java.lang.String</td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:set
+ name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
+ attribute="maxActiveSessions"
+ value="500"
+ type="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>
+</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>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>operation</td>
+ <td>Existing MBean operation (see Tomcat
+ <a href="funcspecs/fs-admin-opers.html">funcspecs/fs-admin-opers.html</a>).
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+ <tr>
+ <td>resultproperty</td>
+ <td>Save result at this project property
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>delimiter</td>
+ <td>Split result with delimiter (java.util.StringTokenizier)
+ and use resultproperty as prefix to store tokens.
+ </td>
+ <td></td>
+ </tr>
+
+ <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>
+ <td><code>true</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:invoke
+ name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
+ operation="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>
+Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count
+with ${sessions.length} property.
+</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>
+ <jmx:invoke
+ name="Catalina:type=Manager,context=/servlets-examples,host=localhost"
+ operation="listSessionIds"
+ resultproperty="sessions"
+ delimiter=" "
+ />
+</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 sessionid at <em>${sessions.[0..N}</em> properties and access the count
+with ${sessions.length} property.
+</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>
+ <jmx:invoke
+ name="Catalina:type=Manager,context=/ClusterTest,host=localhost"
+ operation="getSessionAttribute"
+ resultproperty="hello">
+ <arg value="${sessionid.0}"/>
+ <arg value="Hello" />
+ </jmx:invoke>
+</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>
+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>
+ <jmx:invoke
+ name="Catalina:type=MBeanFactory"
+ operation="createAccessLoggerValve"
+ resultproperty="accessLoggerObjectName"
+ >
+ <arg value="Catalina:type=Host,host=localhost"/>
+ </jmx:invoke>
+</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 new MBean with name stored at <em>${accessLoggerObjectName}</em>
+property.
+</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>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>JMX ObjectName query string -- <em>Catalina:type=Manager,*</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+ <tr>
+ <td>resultproperty</td>
+ <td>Prefix project property name to all founded MBeans (<em>mbeans.[0..N].objectname</em>)
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>attributebinduing</td>
+ <td>bind ALL MBean attributes in addition to <em>name</em>
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+ <tr>
+ <td>delimiter</td>
+ <td>Split result with delimiter (java.util.StringTokenizier)
+ and use resultproperty as prefix to store tokens.
+ </td>
+ <td></td>
+ </tr>
+
+ <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>
+ <td><code>true</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:query
+ name="Catalina:type=Manager,*
+ resultproperty="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>
+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>
+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>
+ <jmx:query
+ name="Catalina:type=Manager,context=/servlet-examples,host=localhost*"
+ attributebinding="true"
+ resultproperty="manager.servletExamples" />
+</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 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>
+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>
+<project name="jmx.query"
+ xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
+ default="query-all" basedir=".">
+<property name="jmx.host" value="localhost"/>
+<property name="jmx.port" value="8050"/>
+<property name="jmx.username" value="controlRole"/>
+<property name="jmx.password" value="tomcat"/>
+
+<target name="query-all" description="Query all MBeans of a server">
+ <!-- Configure connection -->
+ <jmx:open
+ host="${jmx.host}"
+ port="${jmx.port}"
+ ref="jmx.server"
+ username="${jmx.username}"
+ password="${jmx.password}"/>
+
+ <!-- Query MBean list -->
+ <jmx:query
+ name="*:*"
+ resultproperty="mbeans"
+ attributebinding="false"/>
+
+ <echoproperties
+ destfile="mbeans.properties"
+ prefix="mbeans."
+ format="xml"/>
+
+ <!-- Print results -->
+ <echo message=
+ "Number of MBeans in server ${jmx.host}:${jmx.port} is ${mbeans.length}"/>
+</target>
+</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>
+Now you can find all MBeans inside the file <em>mbeans.properties</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="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>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=MBeanFactory</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>className</td>
+ <td>Existing MBean full qualified class name (see Tomcat MBean description above)
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <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,context=/myapps,host=localhost</em>)
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:create
+ ref="${jmx.reference}"
+ name="Catalina:type=MBeanFactory"
+ className="org.apache.commons.modeler.BaseModelMBean"
+ classLoader="Catalina:type=ServerClassLoader,name=server">
+ <arg value="org.apache.catalina.mbeans.MBeanFactory" />
+ </jmx:create>
+</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>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>
+ operation instead.
+</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="JMXAccessorUnregisterTask: remote unregister MBean Ant task"><!--()--></a><a name="JMXAccessorUnregisterTask:__remote_unregister_MBean_Ant_task"><strong>JMXAccessorUnregisterTask: remote unregister MBean Ant task</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=MBeanFactory</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>JMX Connection reference
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo command usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+</table>
+</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>
+ <jmx:unregister
+ name="Catalina:type=MBeanFactory"
+ />
+</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>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>
+ remove operation instead.
+</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="JMXAccessorCondition: express condition"><!--()--></a><a name="JMXAccessorCondition:__express_condition"><strong>JMXAccessorCondition: express condition</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>url</td>
+ <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>host</td>
+ <td>Set the host, shortcut the very long URL syntax.
+ </td>
+ <td><code>localhost</code></td>
+ </tr>
+
+ <tr>
+ <td>port</td>
+ <td>Set the remote connection port
+ </td>
+ <td><code>8050</code></td>
+ </tr>
+
+ <tr>
+ <td>username</td>
+ <td>remote JMX connection user name.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>password</td>
+ <td>remote JMX connection password.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>Name of the internal connection reference. With this attribute you can
+ configure more the one connection inside the same Ant project.
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>echo</td>
+ <td>Echo condition usage (access and result)
+ </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.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>unless</td>
+ <td>Only execute if a property of the given name <b>not exists</b> in the current project.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>value (requiered)</td>
+ <td>Second arg for operation
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>type</td>
+ <td>Value type to express operation (support <em>long</em> and <em>double</em>)
+ </td>
+ <td><code>long</code></td>
+ </tr>
+
+ <tr>
+ <td>operation</td>
+ <td> express one
+ <ul>
+ <li>== equals</li>
+ <li>!= not equals</li>
+ <li>> greater than (&gt;)</li>
+ <li>>= greater than or equals (&gt;=)</li>
+ <li>< lesser than (&lt;)</li>
+ <li><= lesser than or equals (&lt;=)</li>
+ </ul>
+ </td>
+ <td><code>==</code></td>
+ </tr>
+
+</table>
+</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>
+<target name="wait">
+ <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" >
+ <and>
+ <socket server="${server.name}" port="${server.port}"/>
+ <http url="${url}"/>
+ <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"
+ />
+ </and>
+ </waitfor>
+ <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" />
+ <echo message="Server ${url} alive" />
+</target>
+</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="#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>
+List of Attributes<br>
+<table border="1" cellpadding="5">
+
+ <tr>
+ <th align="center" bgcolor="aqua">Attribute</th>
+ <th align="center" bgcolor="aqua">Description</th>
+ <th align="center" bgcolor="aqua">Default value</th>
+ </tr>
+
+ <tr>
+ <td>url</td>
+ <td>Set JMX connection URL - <em>service:jmx:rmi:///jndi/rmi://localhost:8050/jmxrmi</em>
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>host</td>
+ <td>Set the host, shortcut the very long URL syntax.
+ </td>
+ <td><code>localhost</code></td>
+ </tr>
+
+ <tr>
+ <td>port</td>
+ <td>Set the remote connection port
+ </td>
+ <td><code>8050</code></td>
+ </tr>
+
+ <tr>
+ <td>username</td>
+ <td>remote JMX connection user name.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>password</td>
+ <td>remote JMX connection password.
+ </td>
+ <td></td>
+ </tr>
+
+ <tr>
+ <td>ref</td>
+ <td>Name of the internal connection reference. With this attribute you can
+ configure more the one connection inside the same Ant project.
+ </td>
+ <td><code>jmx.server</code></td>
+ </tr>
+
+ <tr>
+ <td>name</td>
+ <td>Full qualified JMX ObjectName -- <em>Catalina:type=Server</em>
+ </td>
+ <td></td>
+ </tr>
+
+
+ <tr>
+ <td>echo</td>
+ <td>Echo condition usage (access and result)
+ </td>
+ <td><code>false</code></td>
+ </tr>
+
+</table>
+</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>
+<target name="wait">
+ <waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" >
+ <and>
+ <socket server="${server.name}" port="${server.port}"/>
+ <http url="${url}"/>
+ <jmx:equals
+ 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"
+ />
+ </and>
+ </waitfor>
+ <fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" />
+ <echo message="Server ${url} alive" />
+</target>
+</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="#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 runing 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 Ichinga: 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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/proxy-howto.html b/webapps/docs/proxy-howto.html
new file mode 100644
index 0000000..cebd923
--- /dev/null
+++ b/webapps/docs/proxy-howto.html
@@ -0,0 +1,161 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>Using standard configurations of Tomcat, web applications can ask for
+the server name and port number to which the request was directed for
+processing. When Tomcat is running standalone with the
+<a href="config/coyote.html">Coyote HTTP/1.1 Connector</a>, it will generally
+report the server name specified in the request, and the port number on
+which the <strong>Connector</strong> is listening. The servlet API
+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.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>
+
+<p>When you are running behind a proxy server (or a web server that is
+configured to behave like a proxy server), you will sometimes prefer to
+manage the values returned by these calls. In particular, you will
+generally want the port number to reflect that specified in the original
+request, not the one on which the <strong>Connector</strong> itself is
+listening. You can use the <code>proxyName</code> and <code>proxyPort</code>
+attributes on the <code><Connector></code> element to configure
+these values.</p>
+
+<p>Proxy support can take many forms. The following sections describe
+proxy configurations for several common 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="Apache 1.3 Proxy Support"><!--()--></a><a name="Apache_1.3_Proxy_Support"><strong>Apache 1.3 Proxy Support</strong></a></font></td></tr><tr><td><blockquote>
+
+<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 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>
+<li>Configure your copy of Apache so that it includes the
+ <code>mod_proxy</code> module. If you are building from source,
+ the easiest way to do this is to include the
+ <code>--enable-module=proxy</code> directive on the
+ <code>./configure</code> command line.</li>
+<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>
+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>
+<li>Include two directives in your <code>httpd.conf</code> file 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>
+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>
+ which tells Apache to forward URLs of the form
+ <code>http://localhost/myapp/*</code> to the Tomcat connector
+ listening on port 8081.</li>
+<li>Configure your copy of Tomcat to include a special
+ <code><Connector></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>
+<Connector port="8081" ...
+ proxyName="www.mycompany.com"
+ proxyPort="80"/>
+</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>
+ 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>
+<li>It is legal to omit the <code>proxyName</code> attribute from the
+ <code><Connector></code> element. If you do so, the value
+ returned by <code>request.getServerName()</code> will by the host
+ name on which Tomcat is running. In the example above, it would be
+ <code>localhost</code>.</li>
+<li>If you also have a <code><Connector></code> listening on port
+ 8080 (nested within the same <a href="config/service.html">Service</a>
+ element), the requests to either port will share the same set of
+ virtual hosts and web applications.</li>
+<li>You might wish to use the IP filtering features of your operating
+ system to restrict connections to port 8081 (in this example) to
+ be allowed <strong>only</strong> from the server that is running
+ Apache.</li>
+<li>Alternatively, you can set up a series of web applications that are
+ only available via proxying, as follows:
+ <ul>
+ <li>Configure another <code><Service></code> that contains
+ only a <code><Connector></code> for the proxy port.</li>
+ <li>Configure appropriate <a href="config/engine.html">Engine</a>,
+ <a href="config/host.html">Host</a>, and
+ <a href="config/context.html">Context</a> elements for the virtual hosts
+ and web applications accessible via proxying.</li>
+ <li>Optionally, protect port 8081 with IP filters as described
+ earlier.</li>
+ </ul></li>
+<li>When requests are proxied by Apache, the web server will be recording
+ these requests in its access log. Therefore, you will generally want to
+ disable any access logging performed by Tomcat itself.</li>
+</ol>
+
+<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> 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
+(<code>/WEB-INF/web.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="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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/realm-howto.html b/webapps/docs/realm-howto.html
new file mode 100644
index 0000000..9023185
--- /dev/null
+++ b/webapps/docs/realm-howto.html
@@ -0,0 +1,1217 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>This document describes how to configure Tomcat to support <em>container
+managed security</em>, by connecting to an existing "database" of usernames,
+passwords, and user roles. You only need to care about this if you are using
+a web application that includes one or more
+<code><security-constraint></code> elements, and a
+<code><login-config></code> element defining how users are required
+to authenticate themselves. If you are not utilizing these features, you can
+safely skip this document.</p>
+
+<p>For fundamental background information about container managed security,
+see the <a href="http://wiki.apache.org/tomcat/Specifications">Servlet
+Specification (Version 2.4)</a>, Section 12.</p>
+
+<p>For information about utilizing the <em>Single Sign On</em> feature of
+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>
+
+</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="What is a Realm?"><!--()--></a><a name="What_is_a_Realm?"><strong>What is a Realm?</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>A <strong>Realm</strong> is a "database" of usernames and passwords that
+identify valid users of a web application (or set of web applications), plus
+an enumeration of the list of <em>roles</em> associated with each valid user.
+You can think of roles as similar to <em>groups</em> in Unix-like operating
+systems, because access to specific web application resources is granted to
+all users possessing a particular role (rather than enumerating the list of
+associated usernames). A particular user can have any number of roles
+associated with their username.</p>
+
+<p>Although the Servlet Specification describes a portable mechanism for
+applications to <em>declare</em> their security requirements (in the
+<code>web.xml</code> deployment descriptor), there is no portable API
+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
+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
+sources of authentication information:</p>
+<ul>
+<li><a href="#JDBCRealm">JDBCRealm</a> - Accesses authentication information
+ stored in a relational database, accessed via a JDBC driver.</li>
+<li><a href="#DataSourceRealm">DataSourceRealm</a> - Accesses authentication
+ information stored in a relational database, accessed via a named JNDI
+ JDBC DataSource.</li>
+<li><a href="#JNDIRealm">JNDIRealm</a> - Accesses authentication information
+ stored in an LDAP based directory server, accessed via a JNDI provider.
+ </li>
+<li><a href="#UserDatabaseRealm">UserDatabaseRealm</a> - Accesses authentication
+ information stored in an UserDatabase JNDI resource, which is typically
+ backed by an XML document (<code>conf/tomcat-users.xml</code>).</li>
+<li><a href="#MemoryRealm">MemoryRealm</a> - Accesses authentication
+ information stored in an in-memory object collection, which is initialized
+ from an XML document (<code>conf/tomcat-users.xml</code>).</li>
+<li><a href="#JAASRealm">JAASRealm</a> - Accesses authentication information
+ through the Java Authentication & Authorization Service (JAAS)
+ framework.</li>
+</ul>
+
+<p>It is also possible to write your own <code>Realm</code> implementation,
+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>
+</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="Configuring a Realm"><!--()--></a><a name="Configuring_a_Realm"><strong>Configuring a Realm</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Before getting into the details of the standard Realm implementations, it is
+important to understand, in general terms, how a Realm is configured. In
+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>
+<Realm className="... class name for this implementation"
+ ... other attributes for this implementation .../>
+</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 <code><Realm></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):
+</p>
+<ul>
+<li><em>Inside an <Engine> element</em> - This Realm will be shared
+ across ALL web applications on ALL virtual hosts, UNLESS it is overridden
+ by a Realm element nested inside a subordinate <code><Host></code>
+ or <code><Context></code> element.</li>
+<li><em>Inside a <Host> element</em> - This Realm will be shared across
+ ALL web applications for THIS virtual host, UNLESS it is overridden
+ by a Realm element nested inside a subordinate <code><Context></code>
+ element.</li>
+<li><em>Inside a <Context> element</em> - This Realm will be used ONLY
+ for THIS web application.</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="Common Features"><!--()--></a><a name="Common_Features"><strong>Common 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="Digested Passwords"><!--()--></a><a name="Digested_Passwords"><strong>Digested Passwords</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>For each of the standard <code>Realm</code> implementations, the
+user's password (by default) is stored in clear text. In many
+environments, this is undesirable because casual observers of the
+authentication data can collect enough information to log on
+successfully, and impersonate other users. To avoid this problem, the
+standard implementations support the concept of <em>digesting</em>
+user passwords. This allows the stored version of the passwords to be
+encoded (in a form that is not easily reversible), but that the
+<code>Realm</code> implementation can still utilize for
+authentication.</p>
+
+<p>When a standard realm authenticates by retrieving the stored
+password and comparing it with the value presented by the user, you
+can select digested passwords by specifying the <code>digest</code>
+attribute on your <code><Realm></code> element. The value for
+this attribute must be one of the digest algorithms supported by the
+<code>java.security.MessageDigest</code> class (SHA, MD2, or MD5).
+When you select this option, the contents of the password that is
+stored in the <code>Realm</code> must be the cleartext version of the
+password, as digested by the specified algorithm.</p>
+
+<p>When the <code>authenticate()</code> method of the Realm is called, the
+(cleartext) password specified by the user is itself digested by the same
+algorithm, and the result is compared with the value returned by the
+<code>Realm</code>. An equal match implies that the cleartext version of the
+original password is the same as the one presented by the user, so that this
+user should be authorized.</p>
+
+<p>To calculate the digested value of a cleartext password, two convenience
+techniques are supported:</p>
+<ul>
+<li>If you are writing an application that needs to calculate digested
+ passwords dynamically, call the static <code>Digest()</code> method of the
+ <code>org.apache.catalina.realm.RealmBase</code> class, passing the
+ cleartext password and the digest algorithm name as arguments. This
+ 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>CATALINA_HOME/bin/digest.[bat|sh] -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>
+ and the digested version of this cleartext password will be returned to
+ standard output.</li>
+</ul>
+
+<p>If using digested passwords with DIGEST authentication, the cleartext used
+ to generate the digest is different and the digest must use the MD5
+ algorithm. In the examples above <code>{cleartext-password}</code> must be
+ replaced with <code>{username}:{realm}:{cleartext-password}</code>. For
+ example, in a development environment this might take the form
+ <code>testUser:Authentication required:testPassword</code>. The value for
+ <code>{realm}</code> is taken from the <code><realm-name></code>
+ element of the web application's <code><login-config></code>. If
+ not specified in web.xml, the default value of <code>Authentication
+ required</code> is used.</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>CATALINA_HOME/bin/digest.[bat|sh] -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>
+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
+corrupted in the return, the digest will be invalid.</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 Application"><!--()--></a><a name="Example_Application"><strong>Example Application</strong></a></font></td></tr><tr><td><blockquote>
+
+<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>
+and log on with one of the usernames and passwords described for the default
+<a href="#UserDatabaseRealm">UserDatabaseRealm</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="Manager Application"><!--()--></a><a name="Manager_Application"><strong>Manager Application</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>If you wish to use the <a href="manager-howto.html">Manager Application</a>
+to deploy and undeploy applications in a running Tomcat installation, you
+MUST add the "manager-gui" role to at least one username in your selected
+Realm implementation. This is because the manager web application itself uses a
+security constraint that requires role "manager-gui" to access ANY request URI
+within the HTML interface of that application.</p>
+
+<p>For security reasons, no username in the default Realm (i.e. using
+<code>conf/tomcat-users.xml</code> is assigned the "manager-gui" role.
+Therefore, no one will be able to utilize the features of this application
+until the Tomcat administrator specifically assigns this role to one or more
+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="Realm Logging"><!--()--></a><a name="Realm_Logging"><strong>Realm Logging</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Debugging and exception messages logged by a <code>Realm</code> will
+ be recorded by the logging configuration associated with the container
+ for the realm: its surrounding <a href="config/context.html">Context</a>,
+ <a href="config/host.html">Host</a>, or
+ <a href="config/engine.html">Engine</a>.</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="Standard Realm Implementations"><!--()--></a><a name="Standard_Realm_Implementations"><strong>Standard Realm 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="JDBCRealm"><strong>JDBCRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+<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
+database structure conforms to the following requirements:</p>
+<ul>
+<li>There must be a table, referenced below as the <em>users</em> table,
+ that contains one row for every valid user that this <code>Realm</code>
+ should recognize.</li>
+<li>The <em>users</em> table must contain at least two columns (it may
+ contain more if your existing applications required it):
+ <ul>
+ <li>Username to be recognized by Tomcat when the user logs in.</li>
+ <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>
+<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
+ one valid role.</li>
+<li>The <em>user roles</em> table must contain at least two columns (it may
+ contain more if your existing applications required it):
+ <ul>
+ <li>Username to be recognized by Tomcat (same value as is specified
+ in the <em>users</em> table).</li>
+ <li>Role name of a valid role associated with this user.</li>
+ </ul></li>
+</ul>
+
+<h3>Quick Start</h3>
+
+<p>To set up Tomcat to use JDBCRealm, you will need to follow these steps:</p>
+<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>Place a copy of the JDBC driver you will be using inside the
+ <code>$CATALINA_HOME/lib</code> directory.
+ Note that <strong>only</strong> JAR files are recognized!</li>
+<li>Set up a <code><Realm></code> element, as described below, in your
+ <code>$CATALINA_BASE/conf/server.xml</code> file.</li>
+<li>Restart Tomcat if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure JDBCRealm, you will create a <code><Realm></code>
+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>. The attributes for the
+JDBCRealm are defined in the <a href="config/realm.html">Realm</a> configuration
+documentation.</p>
+
+<h3>Example</h3>
+
+<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>
+create table users (
+ user_name varchar(15) not null primary key,
+ user_pass varchar(15) not null
+);
+
+create table user_roles (
+ user_name varchar(15) not null,
+ 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>
+
+<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>
+<Realm className="org.apache.catalina.realm.JDBCRealm"
+ driverName="org.gjt.mm.mysql.Driver"
+ connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;password=dbpass"
+ userTable="users" userNameCol="user_name" userCredCol="user_pass"
+ userRoleTable="user_roles" roleNameCol="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>
+
+<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 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>
+<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.
+ (For FORM-based authentication, that means until the session times out or
+ is invalidated; for BASIC authentication, that means until the user
+ closes their browser). The cached user is <strong>not</strong> saved and
+ restored across sessions serialisations. Any changes to the database
+ information for an already authenticated user will <strong>not</strong> be
+ reflected until the next time that user logs on again.</li>
+<li>Administering the information in the <em>users</em> and <em>user roles</em>
+ table is the responsibility of your own applications. Tomcat does not
+ provide any built-in capabilities to maintain users and roles.</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="DataSourceRealm"><strong>DataSourceRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+<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
+as your database structure conforms to the following requirements:</p>
+<ul>
+<li>There must be a table, referenced below as the <em>users</em> table,
+ that contains one row for every valid user that this <code>Realm</code>
+ should recognize.</li>
+<li>The <em>users</em> table must contain at least two columns (it may
+ contain more if your existing applications required it):
+ <ul>
+ <li>Username to be recognized by Tomcat when the user logs in.</li>
+ <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>
+<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
+ one valid role.</li>
+<li>The <em>user roles</em> table must contain at least two columns (it may
+ contain more if your existing applications required it):
+ <ul>
+ <li>Username to be recognized by Tomcat (same value as is specified
+ in the <em>users</em> table).</li>
+ <li>Role name of a valid role associated with this user.</li>
+ </ul></li>
+</ul>
+
+<h3>Quick Start</h3>
+
+<p>To set up Tomcat to use DataSourceRealm, you will need to follow these steps:</p>
+<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>
+<li>Set up a <code><Realm></code> element, as described below, in your
+ <code>$CATALINA_BASE/conf/server.xml</code> file.</li>
+<li>Restart Tomcat if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure DataSourceRealm, you will create a <code><Realm></code>
+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>. The attributes for the
+DataSourceRealm are defined in the <a href="config/realm.html">Realm</a>
+configuration documentation.</p>
+
+<h3>Example</h3>
+
+<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>
+create table users (
+ user_name varchar(15) not null primary key,
+ user_pass varchar(15) not null
+);
+
+create table user_roles (
+ user_name varchar(15) not null,
+ 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>
+
+<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>
+<Realm className="org.apache.catalina.realm.DataSourceRealm"
+ dataSourceName="jdbc/authority"
+ userTable="users" userNameCol="user_name" userCredCol="user_pass"
+ userRoleTable="user_roles" roleNameCol="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>
+
+<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 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>
+<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.
+ (For FORM-based authentication, that means until the session times out or
+ is invalidated; for BASIC authentication, that means until the user
+ closes their browser). The cached user is <strong>not</strong> saved and
+ restored across sessions serialisations. Any changes to the database
+ information for an already authenticated user will <strong>not</strong> be
+ reflected until the next time that user logs on again.</li>
+<li>Administering the information in the <em>users</em> and <em>user roles</em>
+ table is the responsibility of your own applications. Tomcat does not
+ provide any built-in capabilities to maintain users and roles.</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="JNDIRealm"><strong>JNDIRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+<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
+supports a variety of approaches to using a directory for
+authentication.</p>
+
+<h4>Connecting to the directory</h4>
+
+<p>The realm's connection to the directory is defined by the
+<strong>connectionURL</strong> configuration attribute. This is a URL
+whose format is defined by the JNDI provider. It is usually an LDAP
+URL that specifies the domain name of the directory server to connect
+to, and optionally the port number and distinguished name (DN) of the
+required root naming context.</p>
+
+<p>If you have more than one provider you can configure an
+<strong>alternateURL</strong>. If a socket connection can not be
+made to the provider at the <strong>connectionURL</strong> an
+attempt will be made to use the <strong>alternateURL</strong>.</p>
+
+<p>When making a connection in order to search the directory and
+retrieve user and role information, the realm authenticates itself to
+the directory with the username and password specified by the
+<strong>connectionName</strong> and
+<strong>connectionPassword</strong> properties. If these properties
+are not specified the connection is anonymous. This is sufficient in
+many cases.
+</p>
+
+
+<h4>Selecting the user's directory entry</h4>
+
+<p>Each user that can be authenticated must be represented in the
+directory by an individual entry that corresponds to an element in the
+initial <code>DirContext</code> defined by the
+<strong>connectionURL</strong> attribute. This user entry must have an
+attribute containing the username that is presented for
+authentication.</p>
+
+<p>Often the distinguished name of the user's entry contains the
+username presented for authentication but is otherwise the same for
+all users. In this case the <strong>userPattern</strong> attribute may
+be used to specify the DN, with "{0}" marking where
+the username should be substituted.</p>
+
+<p>Otherwise the realm must search the directory to find a unique entry
+containing the username. The following attributes configure this
+search:
+
+ <ul>
+ <li><strong>userBase</strong> - the entry that is the base of
+ the subtree containing users. If not specified, the search
+ base is the top-level context.</li>
+
+ <li><strong>userSubtree</strong> - the search scope. Set to
+ <code>true</code> if you wish to search the entire subtree
+ rooted at the <strong>userBase</strong> entry. The default value
+ of <code>false</code> requests a single-level search
+ including only the top level.</li>
+
+ <li><strong>userSearch</strong> - pattern specifying the LDAP
+ search filter to use after substitution of the username.</li>
+
+ </ul>
+</p>
+
+
+<h4>Authenticating the user</h4>
+
+<ul>
+<li>
+<p><b>Bind mode</b></p>
+
+<p>By default the realm authenticates a user by binding to
+the directory with the DN of the entry for that user and the password
+presented by the user. If this simple bind succeeds the user is considered to
+be authenticated.</p>
+
+<p>For security reasons a directory may store a digest of the user's
+password rather than the clear text version (see <a href="#Digested Passwords">Digested Passwords</a> for more information). In that case,
+as part of the simple bind operation the directory automatically
+computes the correct digest of the plaintext password presented by the
+user before validating it against the stored value. In bind mode,
+therefore, the realm is not involved in digest processing. The
+<strong>digest</strong> attribute is not used, and will be ignored if
+set.</p>
+</li>
+
+<li>
+<p><b>Comparison mode</b></p>
+<p>Alternatively, the realm may retrieve the stored
+password from the directory and compare it explicitly with the value
+presented by the user. This mode is configured by setting the
+<strong>userPassword</strong> attribute to the name of a directory
+attribute in the user's entry that contains the password.</p>
+
+<p>Comparison mode has some disadvantages. First, the
+<strong>connectionName</strong> and
+<strong>connectionPassword</strong> attributes must be configured to
+allow the realm to read users' passwords in the directory. For
+security reasons this is generally undesirable; indeed many directory
+implementations will not allow even the directory manager to read
+these passwords. In addition, the realm must handle password digests
+itself, including variations in the algorithms used and ways of
+representing password hashes in the directory. However, the realm may
+sometimes need access to the stored password, for example to support
+HTTP Digest Access Authentication (RFC 2069). (Note that HTTP digest
+authentication is different from the storage of password digests in
+the repository for user information as discussed above).
+</p>
+</li>
+</ul>
+
+<h4>Assigning roles to the user</h4>
+
+<p>The directory realm supports two approaches to the representation
+of roles in the directory:</p>
+
+<ul>
+<li>
+<p><b>Roles as explicit directory entries</b></p>
+
+<p>Roles may be represented by explicit directory entries. A role
+entry is usually an LDAP group entry with one attribute
+containing the name of the role and another whose values are the
+distinguished names or usernames of the users in that role. The
+following attributes configure a directory search to
+find the names of roles associated with the authenticated user:</p>
+
+<ul>
+<li><strong>roleBase</strong> - the base entry for the role search.
+ If not specified, the search base is the top-level directory
+ context.</li>
+
+<li><strong>roleSubtree</strong> - the search
+ scope. Set to <code>true</code> if you wish to search the entire
+ subtree rooted at the <code>roleBase</code> entry. The default
+ value of <code>false</code> requests a single-level search
+ including the top level only.</li>
+
+<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 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, 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>
+
+</ul>
+
+</li>
+</ul>
+
+<ul>
+<li>
+<p><b>Roles as an attribute of the user entry</b></p>
+
+<p>Role names may also be held as the values of an attribute in the
+user's directory entry. Use <strong>userRoleName</strong> to specify
+the name of this attribute.</p>
+
+</li>
+</ul>
+<p>A combination of both approaches to role representation may be used.</p>
+
+<h3>Quick Start</h3>
+
+<p>To set up Tomcat to use JNDIRealm, you will need to follow these steps:</p>
+<ol>
+<li>Make sure your directory server is configured with a schema that matches
+ the requirements listed above.</li>
+<li>If required, configure a username and password for use by Tomcat, that has
+ read only access to the information described above. (Tomcat will
+ never attempt to modify this information.)</li>
+<li>Set up a <code><Realm></code> element, as described below, in your
+ <code>$CATALINA_BASE/conf/server.xml</code> file.</li>
+<li>Restart Tomcat if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure JNDIRealm, you will create a <code><Realm></code>
+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>. The attributes for the
+JNDIRealm are defined in the <a href="config/realm.html">Realm</a> configuration
+documentation.</p>
+
+<h3>Example</h3>
+
+<p>Creation of the appropriate schema in your directory server is beyond the
+scope of this document, because it is unique to each directory server
+implementation. In the examples below, we will assume that you are using a
+distribution of the OpenLDAP directory server (version 2.0.11 or later), which
+can be downloaded from
+<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>
+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>
+
+<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>
+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>
+
+# Define top-level entry
+dn: dc=mycompany,dc=com
+objectClass: dcObject
+dc:mycompany
+
+# Define an entry to contain people
+# searches for users are based on this entry
+dn: ou=people,dc=mycompany,dc=com
+objectClass: organizationalUnit
+ou: people
+
+# Define a user entry for Janet Jones
+dn: uid=jjones,ou=people,dc=mycompany,dc=com
+objectClass: inetOrgPerson
+uid: jjones
+sn: jones
+cn: janet jones
+mail: j.jones@mycompany.com
+userPassword: janet
+
+# Define a user entry for Fred Bloggs
+dn: uid=fbloggs,ou=people,dc=mycompany,dc=com
+objectClass: inetOrgPerson
+uid: fbloggs
+sn: bloggs
+cn: fred bloggs
+mail: f.bloggs@mycompany.com
+userPassword: fred
+
+# Define an entry to contain LDAP groups
+# searches for roles are based on this entry
+dn: ou=groups,dc=mycompany,dc=com
+objectClass: organizationalUnit
+ou: groups
+
+# Define an entry for the "tomcat" role
+dn: cn=tomcat,ou=groups,dc=mycompany,dc=com
+objectClass: groupOfUniqueNames
+cn: tomcat
+uniqueMember: uid=jjones,ou=people,dc=mycompany,dc=com
+uniqueMember: uid=fbloggs,ou=people,dc=mycompany,dc=com
+
+# Define an entry for the "role1" role
+dn: cn=role1,ou=groups,dc=mycompany,dc=com
+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>
+
+<p>An example <code>Realm</code> element for the OpenLDAP directory
+server configured as described above might look like this, assuming
+that users use their uid (e.g. jjones) to login to the
+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>
+<Realm className="org.apache.catalina.realm.JNDIRealm"
+ connectionURL="ldap://localhost:389"
+ userPattern="uid={0},ou=people,dc=mycompany,dc=com"
+ roleBase="ou=groups,dc=mycompany,dc=com"
+ roleName="cn"
+ roleSearch="(uniqueMember={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>
+
+<p>With this configuration, the realm will determine the user's
+distinguished name by substituting the username into the
+<code>userPattern</code>, authenticate by binding to the directory
+with this DN and the password received from the user, and search the
+directory to find the user's roles.</p>
+
+<p>Now suppose that users are expected to enter their email address
+rather than their userid when logging in. In this case the realm must
+search the directory for the user's entry. (A search is also necessary
+when user entries are held in multiple subtrees corresponding perhaps
+to different organizational units or company locations).</p>
+
+<p>Further, suppose that in addition to the group entries you want to
+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>
+dn: uid=jjones,ou=people,dc=mycompany,dc=com
+objectClass: inetOrgPerson
+uid: jjones
+sn: jones
+cn: janet jones
+mail: j.jones@mycompany.com
+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>
+
+<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>
+<Realm className="org.apache.catalina.realm.JNDIRealm"
+ connectionURL="ldap://localhost:389"
+ userBase="ou=people,dc=mycompany,dc=com"
+ userSearch="(mail={0})"
+ userRoleName="memberOf"
+ roleBase="ou=groups,dc=mycompany,dc=com"
+ roleName="cn"
+ roleSearch="(uniqueMember={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>
+
+<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
+attribute and attempts to bind to the directory as
+<code>uid=jjones,ou=people,dc=mycompany,dc=com</code> with the given
+password. If authentication succeeds, she is assigned three roles:
+"role2" and "role3", the values of the "memberOf" attribute in her
+directory entry, and "tomcat", the value of the "cn" attribute in the
+only group entry of which she is a member.</p>
+
+<p>Finally, to authenticate the user by retrieving
+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>
+<Realm className="org.apache.catalina.realm.JNDIRealm"
+ connectionName="cn=Manager,dc=mycompany,dc=com"
+connectionPassword="secret"
+ connectionURL="ldap://localhost:389"
+ userPassword="userPassword"
+ userPattern="uid={0},ou=people,dc=mycompany,dc=com"
+ roleBase="ou=groups,dc=mycompany,dc=com"
+ roleName="cn"
+ roleSearch="(uniqueMember={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>
+
+<p>However, as discussed above, the default bind mode for
+authentication is usually to be preferred.</p>
+
+<h3>Additional Notes</h3>
+
+<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 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>
+<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.
+ (For FORM-based authentication, that means until the session times out or
+ is invalidated; for BASIC authentication, that means until the user
+ closes their browser). The cached user is <strong>not</strong> saved and
+ restored across sessions serialisations. Any changes to the directory
+ information for an already authenticated user will <strong>not</strong> be
+ reflected until the next time that user logs on again.</li>
+<li>Administering the information in the directory server
+ is the responsibility of your own applications. Tomcat does not
+ provide any built-in capabilities to maintain users and roles.</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="UserDatabaseRealm"><strong>UserDatabaseRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+<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
+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>). The users, their passwords
+and their roles may all be editing dynamically, typically via JMX. Changes may
+be saved and will be reflected in the XML file.</p>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure UserDatabaseRealm, you will create a <code><Realm></code>
+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>. The attributes for the
+UserDatabaseRealm are defined in the <a href="config/realm.html">Realm</a>
+configuration documentation.</p>
+
+<h3>User File Format</h3>
+
+<p>The users file uses the same format as the
+<a href="#MemoryRealm">MemoryRealm</a>.</p>
+
+<h3>Example</h3>
+
+<p>The default installation of Tomcat is configured with a UserDatabaseRealm
+nested inside the <code><Engine></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>
+<tomcat-users>
+ <user name="tomcat" password="tomcat" roles="tomcat" />
+ <user name="role1" password="tomcat" roles="role1" />
+ <user name="both" password="tomcat" roles="tomcat,role1" />
+</tomcat-users>
+</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>Additional Notes</h3>
+
+<p>UserDatabaseRealm operates according to the following rules:</p>
+<ul>
+<li>When Tomcat first starts up, it loads all defined users and their
+ associated information from the users file. Changes made to the data in
+ this file will <strong>not</strong> be recognized until Tomcat is
+ 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 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.
+ (For FORM-based authentication, that means until the session times out or
+ is invalidated; for BASIC authentication, that means until the user
+ closes their browser). The cached user is <strong>not</strong> saved and
+ restored across sessions serialisations.</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="MemoryRealm"><strong>MemoryRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+<p><strong>MemoryRealm</strong> is a simple demonstration implementation of the
+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
+in this file are not recognized until Tomcat is restarted.</p>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure MemoryRealm, you will create a <code><Realm></code>
+element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>. The attributes for the
+MemoryRealm are defined in the <a href="config/realm.html">Realm</a>
+configuration documentation.</p>
+
+<h3>User File Format</h3>
+
+<p>The users file (by default, <code>conf/tomcat-users.xml</code> must be an
+XML document, with a root element <code><tomcat-users></code>. Nested
+inside the root element will be a <code><user></code> element for each
+valid user, consisting of the following attributes:</p>
+<ul>
+<li><strong>name</strong> - Username this user must log on with.</li>
+<li><strong>password</strong> - Password this user must log on with (in
+ clear text if the <code>digest</code> attribute was not set on the
+ <code><Realm></code> element, or digested appropriately as
+ described <a href="#Digested Passwords">here</a> otherwise).</li>
+<li><strong>roles</strong> - Comma-delimited list of the role names
+ associated with this user.</li>
+</ul>
+
+<h3>Additional Notes</h3>
+
+<p>MemoryRealm operates according to the following rules:</p>
+<ul>
+<li>When Tomcat first starts up, it loads all defined users and their
+ associated information from the users file. Changes to the data in
+ 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 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.
+ (For FORM-based authentication, that means until the session times out or
+ is invalidated; for BASIC authentication, that means until the user
+ closes their browser). The cached user is <strong>not</strong> saved and
+ restored across sessions serialisations.</li>
+<li>Administering the information in the users file is the responsibility
+ of your application. Tomcat does not
+ provide any built-in capabilities to maintain users and roles.</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="JAASRealm"><strong>JAASRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+<h3>Introduction</h3>
+
+ <p><strong>JAASRealm</strong> is an implementation of the Tomcat
+6 <code>Realm</code> interface that authenticates users through the Java
+Authentication & Authorization Service (JAAS) framework which is now
+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
+J2EE authentication framework for J2EE v1.4, based on the <a href="http://www.jcp.org/en/jsr/detail?id=196">JCP Specification
+Request 196</a> to enhance container-managed security and promote
+'pluggable' authentication mechanisms whose implementations would be
+container-independent.
+ </p>
+ <p>Based on the JAAS login module and principal (see <code>javax.security.auth.spi.LoginModule</code>
+and <code>javax.security.Principal</code>), you can develop your own
+security mechanism or wrap another third-party mechanism for
+integration with the CMA as implemented by Tomcat.
+ </p>
+
+ <h3>Quick Start</h3>
+ <p>To set up Tomcat to use JAASRealm with your own JAAS login module,
+ 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
+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>,
+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
+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 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><Realm></code> element and nest it in your
+<code>$CATALINA_BASE/conf/server.xml</code>
+file within your <code><Engine></code> node. The attributes for the
+JAASRealm 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.</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>
+<Realm className="org.apache.catalina.realm.JAASRealm"
+ appName="MyFooRealm"
+ userClassNames="org.foobar.realm.FooUser"
+ roleClassNames="org.foobar.realm.FooRole"/>
+</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>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
+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 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>
+ <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. For FORM-based authentication, that means until
+ the session times out or is invalidated; for BASIC authentication,
+ that means until the user closes their browser. Any changes to the
+ security information for an already authenticated user will <strong>not</strong>
+ be reflected until the next time that user logs on again.</li>
+ <li>As with other <code>Realm</code> implementations, digested passwords
+ are supported if the <code><Realm></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>
+ </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="CombinedRealm"><strong>CombinedRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>Introduction</h3>
+
+ <p><strong>CombinedRealm</strong> is an implementation of the Tomcat
+ <code>Realm</code> interface that authenticates users through one or more
+ sub-Realms.</p>
+
+ <p>Using CombinedRealm gives the developer the ability to combine multiple
+ Realms of the same or different types. This can be used to authenticate
+ against different sources, provide fall back in case one Realm fails or for
+ any other purpose that requires multiple Realms.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the CombinedRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <h3>Realm Element Attributes</h3>
+ <p>To configure a CombinedRealm, you create a <code><Realm></code>
+ element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code>
+ file within your <code><Engine></code> or <code><Host></code>.
+ You can also nest inside a <code><Context></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>
+<Realm className="org.apache.catalina.realm.CombinedRealm" >
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+ <Realm className="org.apache.catalina.realm.DataSourceRealm"
+ dataSourceName="jdbc/authority"
+ userTable="users" userNameCol="user_name" userCredCol="user_pass"
+ userRoleTable="user_roles" roleNameCol="role_name"/>
+</Realm>
+</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>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="LockOutRealm"><strong>LockOutRealm</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>Introduction</h3>
+
+ <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
+ deliberating making requests with invalid users (and hence causing this
+ cache to grow) the size of the list of users that have failed authentication
+ is limited.</p>
+
+ <p>Sub-realms are defined by nesting <code>Realm</code> elements inside the
+ <code>Realm</code> element that defines the LockOutRealm. Authentication
+ will be attempted against each <code>Realm</code> in the order they are
+ listed. Authentication against any Realm will be sufficient to authenticate
+ the user.</p>
+
+ <h3>Realm Element Attributes</h3>
+ <p>To configure a LockOutRealm, you create a <code><Realm></code>
+ element and nest it in your <code>$CATALINA_BASE/conf/server.xml</code>
+ file within your <code><Engine></code> or <code><Host></code>.
+ You can also nest inside a <code><Context></code> node in a
+ <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>
+<Realm className="org.apache.catalina.realm.LockOutRealm" >
+ <Realm className="org.apache.catalina.realm.UserDatabaseRealm"
+ resourceName="UserDatabase"/>
+</Realm>
+</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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/security-howto.html b/webapps/docs/security-howto.html
new file mode 100644
index 0000000..f4eb70a
--- /dev/null
+++ b/webapps/docs/security-howto.html
@@ -0,0 +1,391 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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></li><li><a href="#Default_web_applications">Default web applications</a></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="#Manager">Manager</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 suitable 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 priviliges, 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>
+ </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>
+ <p>Tomcat ships with a number of web applications 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="#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>
+ </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>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> attribute is used with the
+ AJP connectors to determine if Tomcat should authenticate the user or if
+ authentication can be delegated to the reverse proxy that will then pass
+ the authenticated username to Tomcat as part of the AJP protocol.</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. </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>
+ </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, 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 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.info=Apache Tomcat/7.0.x
+ </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>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.</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="Manager"><strong>Manager</strong></a></font></td></tr><tr><td><blockquote>
+ <p>The manager component is used to generate session IDs.</p>
+
+ <p>The default <strong>entropy</strong> value has been shown to generate predictable values
+ under certain conditions. For more secure session generation, this should
+ be set to a long string. This is done automatically if the APR/native
+ library is installed; a random value will be obtained from the APR/native
+ library.</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>
+ </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><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>
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/security-manager-howto.html b/webapps/docs/security-manager-howto.html
new file mode 100644
index 0000000..2172e68
--- /dev/null
+++ b/webapps/docs/security-manager-howto.html
@@ -0,0 +1,511 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+ <p>The Java <strong>SecurityManager</strong> is what allows a web browser
+ to run an applet in its own sandbox to prevent untrusted code from
+ accessing files on the local file system, connecting to a host other
+ than the one the applet was loaded from, and so on. In the same way
+ the SecurityManager protects you from an untrusted applet running in
+ your browser, use of a SecurityManager while running Tomcat can protect
+ your server from trojan servlets, JSPs, JSP beans, and tag libraries.
+ Or even inadvertent mistakes.</p>
+
+ <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>
+<% System.exit(1); %>
+</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>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 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>
+
+ <p>Permission classes are used to define what Permissions a class loaded
+ 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.</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>
+ for more information.</p>
+
+ <ul>
+ <li><strong>java.util.PropertyPermission</strong> - Controls read/write
+ access to JVM properties such as <code>java.home</code>.</li>
+ <li><strong>java.lang.RuntimePermission</strong> - Controls use of
+ some System/Runtime functions like <code>exit()</code> and
+ <code>exec()</code>. Also control the package access/definition.</li>
+ <li><strong>java.io.FilePermission</strong> - Controls read/write/execute
+ access to files and directories.</li>
+ <li><strong>java.net.SocketPermission</strong> - Controls use of
+ network sockets.</li>
+ <li><strong>java.net.NetPermission</strong> - Controls use of
+ multicast network connections.</li>
+ <li><strong>java.lang.reflect.ReflectPermission</strong> - Controls
+ use of reflection to do class introspection.</li>
+ <li><strong>java.security.SecurityPermission</strong> - Controls access
+ to Security methods.</li>
+ <li><strong>java.security.AllPermission</strong> - Allows access to all
+ permissions, just as if you were running Tomcat without a
+ SecurityManager.</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="Tomcat Custom Permissions"><!--()--></a><a name="Tomcat_Custom_Permissions"><strong>Tomcat Custom Permissions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>Tomcat utilizes a custom permission class called
+ <strong>org.apache.naming.JndiPermission</strong>. This permission
+ controls read access to JNDI named file based resources. The permission
+ name is the JNDI name and there are no actions. A trailing "*" can be
+ 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>
+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>
+
+ <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
+ but disallow it from using file access to read any other files (unless
+ 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>
+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
+ your application has been deployed and **application working directory** is the
+ temporary directory provided to your application as required by the
+ Servlet Specification.</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="Configuring Tomcat With A SecurityManager"><!--()--></a><a name="Configuring_Tomcat_With_A_SecurityManager"><strong>Configuring Tomcat With A SecurityManager</strong></a></font></td></tr><tr><td><blockquote>
+
+ <h3>Policy File Format</h3>
+
+ <p>The security policies implemented by the Java SecurityManager are
+ configured in the <code>$CATALINA_BASE/conf/catalina.policy</code> file.
+ This file completely replaces the <code>java.policy</code> file present
+ in your JDK system directories. The <code>catalina.policy</code> file
+ can be edited by hand, or you can use the
+ <a href="http://docs.oracle.com/javase/6/docs/technotes/guides/security/PolicyGuide.html">policytool</a>
+ application that comes with Java 1.2 or later.</p>
+
+ <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>
+// Example policy file entry
+
+grant [signedBy <signer>,] [codeBase <code source>] {
+ permission <class> [<name> [, <action 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>
+
+ <p>The <strong>signedBy</strong> and <strong>codeBase</strong> entries are
+ optional when granting permissions. Comment lines begin with "//" and
+ end at the end of the current line. The <code>codeBase</code> is in the
+ form of a URL, and for a file URL can use the <code>${java.home}</code>
+ and <code>${catalina.home}</code> properties (which are expanded out to
+ the directory paths defined for them by the <code>JAVA_HOME</code>,
+ <code>CATALINA_HOME</code> and <code>CATALINA_BASE</code> environment
+ variables).</p>
+
+ <h3>The Default Policy File</h3>
+
+ <p>The default <code>$CATALINA_BASE/conf/catalina.policy</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>// 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.
+
+// ============================================================================
+// 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 each web application:
+//
+// * Read access to the web application's document root directory
+// * Read, write and delete access to the web application's working directory
+//
+// $Id: catalina.policy 1460221 2013-03-23 20:17:29Z kkolinko $
+// ============================================================================
+
+
+// ========== SYSTEM CODE PERMISSIONS =========================================
+
+
+// These permissions apply to javac
+grant codeBase "file:${java.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions
+grant codeBase "file:${java.home}/jre/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to javac when ${java.home] points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/../lib/-" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to all shared system extensions when
+// ${java.home} points at $JAVA_HOME/jre
+grant codeBase "file:${java.home}/lib/ext/-" {
+ permission java.security.AllPermission;
+};
+
+
+// ========== CATALINA CODE PERMISSIONS =======================================
+
+
+// These permissions apply to the daemon code
+grant codeBase "file:${catalina.home}/bin/commons-daemon.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the logging API
+// Note: If tomcat-juli.jar is in ${catalina.base} and not in ${catalina.home},
+// update this section accordingly.
+// 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";
+
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}conf${file.separator}logging.properties", "read";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs", "read, write";
+ permission java.io.FilePermission
+ "${catalina.base}${file.separator}logs${file.separator}*", "read, write";
+
+ permission java.lang.RuntimePermission "shutdownHooks";
+ permission java.lang.RuntimePermission "getClassLoader";
+ permission java.lang.RuntimePermission "setContextClassLoader";
+
+ permission java.util.logging.LoggingPermission "control";
+
+ permission java.util.PropertyPermission "java.util.logging.config.class", "read";
+ permission java.util.PropertyPermission "java.util.logging.config.file", "read";
+ permission java.util.PropertyPermission "catalina.base", "read";
+
+ // Note: To enable per context logging configuration, permit read access to
+ // the appropriate file. Be sure that the logging configuration is
+ // secure before enabling such access.
+ // E.g. for the examples web application (uncomment and unwrap
+ // the following to be on a single line):
+ // permission java.io.FilePermission "${catalina.base}${file.separator}
+ // webapps${file.separator}examples${file.separator}WEB-INF
+ // ${file.separator}classes${file.separator}logging.properties", "read";
+};
+
+// These permissions apply to the server startup code
+grant codeBase "file:${catalina.home}/bin/bootstrap.jar" {
+ permission java.security.AllPermission;
+};
+
+// These permissions apply to the servlet API classes
+// and those that are shared across all class loaders
+// located in the "lib" directory
+grant codeBase "file:${catalina.home}/lib/-" {
+ permission java.security.AllPermission;
+};
+
+
+// If using a per instance lib directory, i.e. ${catalina.base}/lib,
+// then the following permission will need to be uncommented
+// grant codeBase "file:${catalina.base}/lib/-" {
+// permission java.security.AllPermission;
+// };
+
+
+// ========== WEB APPLICATION PERMISSIONS =====================================
+
+
+// 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 {
+ // 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";
+ permission java.util.PropertyPermission "java.naming.*", "read";
+ permission java.util.PropertyPermission "javax.sql.*", "read";
+
+ // OS Specific properties to allow read access
+ permission java.util.PropertyPermission "os.name", "read";
+ permission java.util.PropertyPermission "os.version", "read";
+ permission java.util.PropertyPermission "os.arch", "read";
+ permission java.util.PropertyPermission "file.separator", "read";
+ permission java.util.PropertyPermission "path.separator", "read";
+ permission java.util.PropertyPermission "line.separator", "read";
+
+ // JVM properties to allow read access
+ permission java.util.PropertyPermission "java.version", "read";
+ permission java.util.PropertyPermission "java.vendor", "read";
+ permission java.util.PropertyPermission "java.vendor.url", "read";
+ permission java.util.PropertyPermission "java.class.version", "read";
+ permission java.util.PropertyPermission "java.specification.version", "read";
+ permission java.util.PropertyPermission "java.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.specification.name", "read";
+
+ permission java.util.PropertyPermission "java.vm.specification.version", "read";
+ permission java.util.PropertyPermission "java.vm.specification.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.specification.name", "read";
+ permission java.util.PropertyPermission "java.vm.version", "read";
+ permission java.util.PropertyPermission "java.vm.vendor", "read";
+ permission java.util.PropertyPermission "java.vm.name", "read";
+
+ // Required for OpenJMX
+ permission java.lang.RuntimePermission "getAttribute";
+
+ // 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.*";
+
+ // 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";
+
+ // 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 WebSocket need to be able to access this package
+ permission java.lang.RuntimePermission "accessClassInPackage.org.apache.catalina.websocket";
+};
+
+
+// The Manager application needs access to the following packages to support the
+// session display functionality. These settings support the following
+// configurations:
+// - default CATALINA_HOME == CATALINA_BASE
+// - CATALINA_HOME != CATALINA_BASE, per instance Manager in CATALINA_BASE
+// - 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
+// adding additional "grant" entries here, based on the code base for that
+// application, /WEB-INF/classes/, or /WEB-INF/lib/ jar files.
+//
+// Different permissions can be granted to JSP pages, classes loaded from
+// the /WEB-INF/classes/ directory, all jar files in the /WEB-INF/lib/
+// directory, or even to individual jar files in the /WEB-INF/lib/ directory.
+//
+// For instance, assume that the standard "examples" application
+// included a JDBC driver that needed to establish a network connection to the
+// corresponding database and used the scrape taglib to get the weather from
+// the NOAA web server. You might create a "grant" entries like this:
+//
+// The permissions granted to the context root directory apply to JSP pages.
+// grant codeBase "file:${catalina.base}/webapps/examples/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+//
+// The permissions granted to the context WEB-INF/classes directory
+// grant codeBase "file:${catalina.base}/webapps/examples/WEB-INF/classes/-" {
+// };
+//
+// The permission granted to your JDBC driver
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/driver.jar!/-" {
+// permission java.net.SocketPermission "dbhost.mycompany.com:5432", "connect";
+// };
+// The permission granted to the scrape taglib
+// grant codeBase "jar:file:${catalina.base}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
+// 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>
+
+ <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>
+$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>
+
+</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>
+
+
+ <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>
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageAccess unless the
+# corresponding RuntimePermission ("accessClassInPackage."+package) has
+# been granted.
+package.access=sun.,org.apache.catalina.,org.apache.coyote.,org.apache.tomcat.,
+org.apache.jasper.
+#
+# List of comma-separated packages that start with or equal this string
+# will cause a security exception to be thrown when
+# passed to checkPackageDefinition unless the
+# corresponding RuntimePermission ("defineClassInPackage."+package) has
+# been granted.
+#
+# by default, no packages are restricted for definition, and none of
+# the class loaders supplied with the JDK call checkPackageDefinition.
+#
+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>
+ <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>
+
+ <p>If your web application attempts to execute an operation that is
+ prohibited by lack of a required Permission, it will throw an
+ <code>AccessControLException</code> or a <code>SecurityException</code>
+ when the SecurityManager detects the violation. Debugging the permission
+ that is missing can be challenging, and one option is to turn on debug
+ output of all security decisions that are made during execution. This
+ 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>
+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>
+
+ <p>before starting Tomcat.</p>
+
+ <p><strong>WARNING</strong> - This will generate <em>many megabytes</em>
+ of output! However, it can help you track down problems by searching
+ for the word "FAILED" and determining which permission was being checked
+ for. See the Java security documentation for more options that you can
+ specify here as well.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/servletapi/index.html b/webapps/docs/servletapi/index.html
new file mode 100644
index 0000000..ab0da83
--- /dev/null
+++ b/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/webapps/docs/setup.html b/webapps/docs/setup.html
new file mode 100644
index 0000000..6c053de
--- /dev/null
+++ b/webapps/docs/setup.html
@@ -0,0 +1,172 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+ There are several ways to set up Tomcat for running on different
+ platforms. The main documentation for this is a file called
+ <a href="RUNNING.txt">RUNNING.txt</a>. We encourage you to refer to that
+ file if the information below does not answer some of your questions.
+ </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="Windows"><strong>Windows</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>
+ 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
+ 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
+ starts. For optimal security, the service should be run as a
+ separate user, with reduced permissions (see the Windows Services
+ 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 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 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
+ icon will be used even if Tomcat was installed as a service.</li>
+ <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>
+ </ul>
+ </p>
+
+ <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
+ 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>
+
+ <p>Before running the script, the <code>JAVA_HOME</code> environment
+ variable should be set to the base path of the JDK. Alternately, when
+ calling the <code>./configure</code> script, the path of the JDK may
+ be specified using the <code>--with-java</code> parameter, such as
+ <code>./configure --with-java=/usr/java</code>.</p>
+
+ <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
+ 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>
+ cd $CATALINA_HOME/bin
+ tar xvfz commons-daemon-native.tar.gz
+ cd commons-daemon-1.0.x-native-src/unix
+ ./configure
+ 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>
+
+ <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>
+ CATALINA_BASE=$CATALINA_HOME
+ cd $CATALINA_HOME
+ ./bin/jsvc \
+ -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 \
+ -Dcatalina.base=$CATALINA_BASE \
+ -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>
+
+ <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. 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>
+
+ <p>The file <code>$CATALINA_HOME/bin/daemon.sh</code> can be used as a
+ 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
+ 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>
+
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/ssi-howto.html b/webapps/docs/ssi-howto.html
new file mode 100644
index 0000000..ddf3909
--- /dev/null
+++ b/webapps/docs/ssi-howto.html
@@ -0,0 +1,397 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+
+<p>SSI (Server Side Includes) are directives that are placed in HTML pages,
+and evaluated on the server while the pages are being served. They let you
+add dynamically generated content to an existing HTML page, without having
+to serve the entire page via a CGI program, or other dynamic technology.
+</p>
+
+<p>Within Tomcat SSI support can be added when using Tomcat as your
+HTTP server and you require SSI support. Typically this is done
+during development when you don't want to run a web server like Apache.</p>
+
+<p>Tomcat SSI support implements the same SSI directives as Apache. See the
+<a href="http://httpd.apache.org/docs/howto/ssi.html#basicssidirectives">
+Apache Introduction to SSI</a> for information on using SSI directives.</p>
+
+<p>SSI support is available as a servlet and as a filter. You should use one
+or the other to provide SSI support but not both.</p>
+
+<p>Servlet based SSI support is implemented using the class
+<code>org.apache.catalina.ssi.SSIServlet</code>. Traditionally, this servlet
+is mapped to the URL pattern "*.shtml".</p>
+
+<p>Filter based SSI support is implemented using the class
+<code>org.apache.catalina.ssi.SSIFilter</code>. Traditionally, this filter
+is mapped to the URL pattern "*.shtml", though it can be mapped to "*" as
+it will selectively enable/disable SSI processing based on mime types. The
+contentType init param allows you to apply SSI processing to JSP pages,
+javascript, or any other content you wish.</p>
+<p>By default SSI support is disabled in 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="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
+
+<p><strong>CAUTION</strong> - SSI directives can be used to execute programs
+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>To use the SSI servlet, remove the XML comments from around the SSI servlet
+and servlet-mapping configuration in
+<code>$CATALINA_BASE/conf/web.xml</code>.</p>
+
+<p>To use the SSI filter, remove the XML comments from around the SSI filter
+and filter-mapping configuration in
+<code>$CATALINA_BASE/conf/web.xml</code>.</p>
+
+<p>Only Contexts which are marked as privileged may use SSI features (see the
+privileged property of 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="Servlet Configuration"><!--()--></a><a name="Servlet_Configuration"><strong>Servlet 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 SSI servlet.
+<ul>
+<li><strong>buffered</strong> - Should output from this servlet be buffered?
+(0=false, 1=true) Default 0 (false).</li>
+<li><strong>debug</strong> - Debugging detail level for messages logged
+by this servlet. Default 0.</li>
+<li><strong>expires</strong> - The number of seconds before a page with SSI
+directives will expire. Default behaviour is for all SSI directives to be
+evaluated for every request.</li>
+<li><strong>isVirtualWebappRelative</strong> - Should "virtual" SSI directive
+paths be interpreted as relative to the context root, instead of the server
+root? Default false.</li>
+<li><strong>inputEncoding</strong> - The encoding to be assumed for SSI
+resources if one cannot be determined from the resource itself. Default is
+the default platform encoding.</li>
+<li><strong>outputEncoding</strong> - The encoding to be used for the result
+of the SSI processing. Default is UTF-8.</li>
+<li><strong>allowExec</strong> - Is the exec command enabled? Default is
+false.</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="Filter Configuration"><!--()--></a><a name="Filter_Configuration"><strong>Filter Configuration</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>There are several filter init parameters which can be used to
+configure the behaviour of the SSI filter.
+<ul>
+<li><strong>contentType</strong> - A regex pattern that must be matched before
+SSI processing is applied. When crafting your own pattern, don't forget that a
+mime content type may be followed by an optional character set in the form
+"mime/type; charset=set" that you must take into account. Default is
+"text/x-server-parsed-html(;.*)?".</li>
+<li><strong>debug</strong> - Debugging detail level for messages logged
+by this servlet. Default 0.</li>
+<li><strong>expires</strong> - The number of seconds before a page with SSI
+directives will expire. Default behaviour is for all SSI directives to be
+evaluated for every request.</li>
+<li><strong>isVirtualWebappRelative</strong> - Should "virtual" SSI directive
+paths be interpreted as relative to the context root, instead of the server
+root? Default false.</li>
+<li><strong>allowExec</strong> - Is the exec command enabled? Default is
+false.</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="Directives"><strong>Directives</strong></a></font></td></tr><tr><td><blockquote>
+<p>Server Side Includes are invoked by embedding SSI directives in an HTML document
+ whose type will be processed by the SSI servlet. The directives take the form of an HTML
+ comment. The directive is replaced by the results of interpreting it before sending the
+ page to the client. The general form of a directive is: </p>
+<p> <code><!--#directive [parm=value] --></code></p>
+<p>The directives are:
+<ul>
+<li>
+<strong>config</strong> - <code><!--#config timefmt="%B %Y" --></code>
+Used to set the format of dates and other items processed by SSI
+</li>
+<li>
+<strong>echo</strong> - <code><!--#echo var="VARIABLE_NAME" --></code>
+will be replaced by the value of the variable.
+</li>
+<li>
+<strong>exec</strong> - Used to run commands on the host system.
+</li>
+<li>
+<strong>include</strong> - <code><!--#include virtual="file-name" --></code>
+inserts the contents
+</li>
+<li>
+<strong>flastmod</strong> - <code><!--#flastmod file="filename.shtml" --></code>
+Returns the time that a file was lost modified.
+</li>
+<li>
+<strong>fsize</strong> - <code><!--#fsize file="filename.shtml" --></code>
+Returns the size of a file.
+</li>
+<li>
+<strong>printenv</strong> - <code><!--#printenv --></code>
+Returns the list of all the defined variables.
+</li>
+<li>
+<strong>set</strong> - <code><!--#set var="foo" value="Bar" --></code>
+is used to assign a value to a user-defind variable.
+</li>
+<li>
+<strong>if elif endif else</strong> - Used to create conditional sections. For example:</li>
+<code><!--#config timefmt="%A" --><br>
+ <!--#if expr="$DATE_LOCAL = /Monday/" --><br>
+ <p>Meeting at 10:00 on Mondays</p><br>
+ <!--#elif expr="$DATE_LOCAL = /Friday/" --><br>
+ <p>Turn in your time card</p><br>
+ <!--#else --><br>
+ <p>Yoga class at noon.</p><br>
+ <!--#endif --></code>
+ </ul>
+</p>
+See the
+<p> <a href="http://httpd.apache.org/docs/howto/ssi.html#basicssidirectives">
+Apache Introduction to SSI</a> for more information on using SSI directives.</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="Variables"><strong>Variables</strong></a></font></td></tr><tr><td><blockquote>
+<p>The SSI servlet currently implements the following variables:
+</p>
+<table border="1">
+<tr>
+<th>Variable Name</th>
+<th>Description</th>
+</tr>
+
+<tr>
+<td>AUTH_TYPE</td>
+<td>
+ The type of authentication used for this user: BASIC, FORM, etc.</td>
+</tr>
+
+<tr>
+<td>CONTENT_LENGTH</td>
+<td>
+ The length of the data (in bytes or the number of
+ characters) passed from a form.</td>
+</tr>
+
+<tr>
+<td>CONTENT_TYPE</td>
+<td>
+ The MIME type of the query data, such as "text/html".</td>
+</tr>
+
+<tr>
+<td>DATE_GMT</td>
+<td>
+Current date and time in GMT</td>
+</tr>
+
+<tr>
+<td>DATE_LOCAL</td>
+<td>
+Current date and time in the local time zone</td>
+</tr>
+<tr>
+<td>DOCUMENT_NAME</td>
+<td>
+The current file</td>
+</tr>
+<tr>
+<td>DOCUMENT_URI</td>
+<td>
+Virtual path to the file</td>
+</tr>
+
+<tr>
+<td>GATEWAY_INTERFACE</td>
+<td>
+ The revision of the Common Gateway Interface that the
+ server uses if enabled: "CGI/1.1".</td>
+</tr>
+
+<tr>
+<td>HTTP_ACCEPT</td>
+<td>
+ A list of the MIME types that the client can accept.</td>
+</tr>
+
+<tr>
+<td>HTTP_ACCEPT_ENCODING</td>
+<td>
+ A list of the compression types that the client can accept.</td>
+</tr>
+
+<tr>
+<td>HTTP_ACCEPT_LANGUAGE</td>
+<td>
+ A list of the languages that the client can accept.</td>
+</tr>
+<tr>
+<td>HTTP_CONNECTION</td>
+<td>
+ The way that the connection from the client is being managed:
+ "Close" or "Keep-Alive".</td>
+</tr>
+<tr>
+<td>HTTP_HOST</td>
+<td>
+ The web site that the client requested.</td>
+</tr>
+<tr>
+<td>HTTP_REFERER</td>
+<td>
+ The URL of the document that the client linked from.</td>
+</tr>
+<tr>
+<td>HTTP_USER_AGENT</td>
+<td>
+ The browser the client is using to issue the request.</td>
+</tr>
+<tr>
+<td>LAST_MODIFIED</td>
+<td>
+Last modification date and time for current file</td>
+</tr>
+<tr>
+<td>PATH_INFO</td>
+<td>
+ Extra path information passed to a servlet.</td>
+</tr>
+<tr>
+<td>PATH_TRANSLATED</td>
+<td>
+ The translated version of the path given by the
+ variable PATH_INFO.</td>
+</tr>
+<tr>
+<td>QUERY_STRING</td>
+<td>
+The query string that follows the "?" in the URL.
+</td>
+</tr>
+<tr>
+<td>QUERY_STRING_UNESCAPED</td>
+<td>
+Undecoded query string with all shell metacharacters escaped
+with "\"</td>
+</tr>
+<tr>
+<td>REMOTE_ADDR</td>
+<td>
+ The remote IP address of the user making the request.</td>
+</tr>
+<tr>
+<td>REMOTE_HOST</td>
+<td>
+ The remote hostname of the user making the request.</td>
+</tr>
+<tr>
+<td>REMOTE_PORT</td>
+<td>
+ The port number at remote IP address of the user making the request.</td>
+</tr>
+<tr>
+<td>REMOTE_USER</td>
+<td>
+ The authenticated name of the user.</td>
+</tr>
+<tr>
+<td>REQUEST_METHOD</td>
+<td>
+ The method with which the information request was
+ issued: "GET", "POST" etc.</td>
+</tr>
+<tr>
+<td>REQUEST_URI</td>
+<td>
+ The web page originally requested by the client.</td>
+</tr>
+<tr>
+<td>SCRIPT_FILENAME</td>
+<td>
+ The location of the current web page on the server.</td>
+</tr>
+<tr>
+<td>SCRIPT_NAME</td>
+<td>
+ The name of the web page.</td>
+</tr>
+<tr>
+<td>SERVER_ADDR</td>
+<td>
+ The server's IP address.</td>
+</tr>
+<tr>
+<td>SERVER_NAME</td>
+<td>
+ The server's hostname or IP address.</td>
+</tr>
+<tr>
+<td>SERVER_PORT</td>
+<td>
+ The port on which the server received the request.</td>
+</tr>
+<tr>
+<td>SERVER_PROTOCOL</td>
+<td>
+ The protocol used by the server. E.g. "HTTP/1.1".</td>
+</tr>
+<tr>
+<td>SERVER_SOFTWARE</td>
+<td>
+ The name and version of the server software that is
+ answering the client request.</td>
+</tr>
+<tr>
+<td>UNIQUE_ID</td>
+<td>
+ A token used to identify the current session if one
+ has been established.</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/ssl-howto.html b/webapps/docs/ssl-howto.html
new file mode 100644
index 0000000..770761c
--- /dev/null
+++ b/webapps/docs/ssl-howto.html
@@ -0,0 +1,606 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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><style type="text/css">
+ code {background-color:rgb(224,255,255);padding:0 0.1em;}
+ code.attributeName, code.propertyName {background-color:transparent;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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 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</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="#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 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>
+
+<p>To install and configure SSL 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>
+<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>
+</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>
+
+<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>Another important aspect of the SSL 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
+it claims to be. In certain cases, the server may also request a Certificate
+from your web browser, asking for proof that <em>you</em> are who you claim
+to be. This is known as "Client Authentication," although in practice this is
+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>
+
+<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
+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
+pass on any requests destined for the Tomcat container only after decrypting
+those requests. Likewise, Tomcat will return cleartext responses, that will
+be encrypted before being returned to the user's browser. In this environment,
+Tomcat knows that communications between the primary web server and the
+client are taking place over a secure connection (because your application
+needs to be able to ask about this), but it does not participate in the
+encryption or decryption itself.</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="Certificates"><strong>Certificates</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>In order to implement SSL, a web server must have an associated Certificate
+for each external interface (IP address) that accepts secure connections.
+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>
+
+<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>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>
+
+</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>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>
+
+</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>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Prepare the Certificate Keystore"><!--()--></a><a name="Prepare_the_Certificate_Keystore"><strong>Prepare the Certificate Keystore</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Tomcat currently operates only on <code>JKS</code>, <code>PKCS11</code> or
+<code>PKCS12</code> format keystores. The <code>JKS</code> format
+is Java's standard "Java KeyStore" format, and is the format created by the
+<code>keytool</code> command-line utility. This tool is included in the JDK.
+The <code>PKCS12</code> format is an internet standard, and can be manipulated
+via (among other things) OpenSSL and Microsoft's Key-Manager.
+</p>
+
+<p>Each entry in a keystore is identified by an alias string. Whilst many
+keystore implementations treat aliases in a case insensitive manner, case
+sensitive implementations are available. The <code>PKCS11</code> specification,
+for example, requires that aliases are case sensitive. To avoid issues related
+to the case sensitivity of aliases, it is not recommended to use aliases that
+differ only in case.
+</p>
+
+<p>To import an existing certificate into a JKS 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>.
+</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>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>
+<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>(The RSA algorithm should be preferred as a secure algorithm, and this
+also ensures general compatibility with other servers and components.)</p>
+
+<p>This command will create a new file, in the home directory of the user
+under which you run it, named "<code>.keystore</code>". To specify a
+different location or filename, add the <code>-keystore</code> parameter,
+followed by the complete pathname to your keystore file,
+to the <code>keytool</code> command shown above. You will also need to
+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>
+<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>
+
+<p>After executing this command, you will first be prompted for the keystore
+password. The default password used by Tomcat is "<code>changeit</code>"
+(all lower case), although you can specify a custom password if you like.
+You will also need to specify the custom password in the
+<code>server.xml</code> configuration file, as described later.</p>
+
+<p>Next, you will be prompted for general information about this Certificate,
+such as company, contact name, and so on. This information will be displayed
+to users who attempt to access a secure page in your application, so make
+sure that the information provided here matches what they will expect.</p>
+
+<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). 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>
+
+</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>
+<p>
+Tomcat can use two different implementations of SSL:
+<ul>
+<li>the JSSE implementation provided as part of the Java runtime (since 1.4)</li>
+<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>
+- 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.
+</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>
+<!-- Define a blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 -->
+<Connector protocol="org.apache.coyote.http11.Http11Protocol"
+ port="8443" .../>
+
+<!-- Define a non-blocking Java SSL Coyote HTTP/1.1 Connector on port 8443 -->
+<Connector protocol="org.apache.coyote.http11.Http11NioProtocol"
+ port="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>
+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>
+<!-- Define a APR SSL Coyote HTTP/1.1 Connector on port 8443 -->
+<Connector protocol="org.apache.coyote.http11.Http11AprProtocol"
+ port="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>
+
+</p>
+
+<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>
+<Listener className="org.apache.catalina.core.AprLifecycleListener"
+ SSLEngine="someengine" SSLRandomSeed="somedevice" />
+</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>
+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>
+<Listener className="org.apache.catalina.core.AprLifecycleListener"
+ SSLEngine="on" SSLRandomSeed="builtin" />
+</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 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>
+<Listener className="org.apache.catalina.core.AprLifecycleListener"
+ SSLEngine="off" />
+</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>
+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.
+
+</p>
+
+<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 instance. An example <code><Connector></code> element
+for an SSL connector is included in the default <code>server.xml</code>
+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 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>
+<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
+<Connector
+ protocol="HTTP/1.1"
+ port="8443" maxThreads="200"
+ scheme="https" secure="true" SSLEnabled="true"
+ keystoreFile="${user.home}/.keystore" keystorePass="changeit"
+ clientAuth="false" sslProtocol="TLS"/>
+</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 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 many SSL settings,
+ particularly 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>
+<!-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 -->
+<Connector
+ protocol="HTTP/1.1"
+ port="8443" maxThreads="200"
+ scheme="https" secure="true" SSLEnabled="true"
+ SSLCertificateFile="/usr/local/ssl/server.crt"
+ SSLCertificateKeyFile="/usr/local/ssl/server.pem"
+ SSLVerifyClient="optional" SSLProtocol="TLSv1"/>
+</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>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, 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
+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
+(outside the scope of this document) is necessary to run Tomcat on port
+numbers lower than 1024 on many operating systems.</p>
+
+ <blockquote><em>
+ <p>If you change the port number here, you should also change the
+ value specified for the <code>redirectPort</code> attribute on the
+ non-SSL connector. This allows Tomcat to automatically redirect
+ users who attempt to access a page with a security constraint specifying
+ that SSL is required, as required by the Servlet Specification.</p>
+ </em></blockquote>
+
+<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>
+<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>
+
+</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
+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
+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 <your_keystore_filename></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>
+ 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.
+</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 <your_keystore_filename></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>
+</ul>
+<p>Now you have a file called <code>certreq.csr</code> that you can submit to the Certificate Authority (look at the
+documentation of the Certificate Authority website on how to do this). In return you get a Certificate.</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="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.
+After that you can proceed with importing your Certificate.</p>
+
+<ul>
+<li>Download a Chain Certificate from the Certificate Authority you obtained the Certificate from.<br>
+ For Verisign.com commercial certificates go to:
+ http://www.verisign.com/support/install/intermediate.html<br>
+ For Verisign.com trial certificates go to:
+ http://www.verisign.com/support/verisign-intermediate-ca/Trial_Secure_Server_Root/index.html<br>
+ For Trustcenter.de go to:
+ http://www.trustcenter.de/certservices/cacerts/en/en.htm#server<br>
+ For Thawte.com go to:
+ 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 <your_keystore_filename> \
+ -trustcacerts -file <filename_of_the_chain_certificate></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>
+<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 <your_keystore_filename> \
+ -file <your_certificate_filename></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>
+</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="Troubleshooting"><strong>Troubleshooting</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>Here is a list of common problems that you may encounter when setting up
+SSL communications, and what to do about them.</p>
+
+<ul>
+
+<li>When Tomcat starts up, I get an exception like
+ "java.io.FileNotFoundException: {some-directory}/{some-file} not found".
+ <blockquote>
+ <p>A likely explanation is that Tomcat cannot find the keystore file
+ where it is looking. By default, Tomcat expects the keystore file to
+ 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><Factory></code>
+ element in the <a href="#Edit the Tomcat Configuration File">Tomcat
+ configuration file</a>.</p>
+ </blockquote></li>
+
+<li>When Tomcat starts up, I get an exception like
+ "java.io.FileNotFoundException: Keystore was tampered with, or
+ password was incorrect".
+ <blockquote>
+ <p>Assuming that someone has not <em>actually</em> tampered with
+ your keystore file, the most likely cause is that Tomcat is using
+ a different password than the one you used when you created the
+ keystore file. To fix this, you can either go back and
+ <a href="#Prepare the Certificate Keystore">recreate the keystore
+ file</a>, or you can add or update the <code>keystorePass</code>
+ attribute on the <code><Connector></code> element in the
+ <a href="#Edit the Tomcat Configuration File">Tomcat configuration
+ file</a>. <strong>REMINDER</strong> - Passwords are case sensitive!</p>
+ </blockquote></li>
+
+<li>When Tomcat starts up, I get an exception like
+ "java.net.SocketException: SSL handshake errorjavax.net.ssl.SSLException: No
+ available certificate or key corresponds to the SSL cipher suites which are
+ enabled."
+ <blockquote>
+ <p>A likely explanation is that Tomcat cannot find the alias for the server
+ key within the specified keystore. Check that the correct
+ <code>keystoreFile</code> and <code>keyAlias</code> are specified in the
+ <code><Connector></code> element in the
+ <a href="#Edit the Tomcat Configuration File">Tomcat configuration file</a>.
+ <strong>REMINDER</strong> - <code>keyAlias</code> values may be case
+ sensitive!</p>
+ </blockquote></li>
+
+</ul>
+
+<p>If you are still having problems, a good source of information is the
+<strong>TOMCAT-USER</strong> mailing list. You can find pointers to archives
+of previous messages on this list, as well as subscription and unsubscription
+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 SSLValve) 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 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 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<SessionTrackingMode> modes =
+ EnumSet.of(SessionTrackingMode.SSL);
+
+ context.setSessionTrackingModes(modes);
+ }
+
+}
+ </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>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_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>.
+</p>
+
+ <p>To terminate an SSL session, 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>
+// 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");
+ </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>
+ 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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/developers.html b/webapps/docs/tribes/developers.html
new file mode 100644
index 0000000..e52073c
--- /dev/null
+++ b/webapps/docs/tribes/developers.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/faq.html b/webapps/docs/tribes/faq.html
new file mode 100644
index 0000000..1dbe90a
--- /dev/null
+++ b/webapps/docs/tribes/faq.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/interceptors.html b/webapps/docs/tribes/interceptors.html
new file mode 100644
index 0000000..19e2766
--- /dev/null
+++ b/webapps/docs/tribes/interceptors.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/introduction.html b/webapps/docs/tribes/introduction.html
new file mode 100644
index 0000000..f657ed3
--- /dev/null
+++ b/webapps/docs/tribes/introduction.html
@@ -0,0 +1,275 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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>
+
+ <p>Apache Tribes is a group or peer-to-peer communication framework that enables you to easily connect
+ your remote objects to communicate with each other.
+ </p>
+ <ul>
+ <li>Import: <code>org.apache.catalina.tribes.Channel</code></li>
+ <li>Import: <code>org.apache.catalina.tribes.Member</code></li>
+ <li>Import: <code>org.apache.catalina.tribes.MembershipListener</code></li>
+ <li>Import: <code>org.apache.catalina.tribes.ChannelListener</code></li>
+ <li>Import: <code>org.apache.catalina.tribes.group.GroupChannel</code></li>
+ <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>
+ //create a channel
+ Channel myChannel = new GroupChannel();
+
+ //create my listeners
+ ChannelListener msgListener = new MyMessageListener();
+ MembershipListener mbrListener = new MyMemberListener();
+
+ //attach the listeners to the channel
+ myChannel.addMembershipListener(mbrListener);
+ myChannel.addChannelListener(msgListener);
+
+ //start the channel
+ myChannel.start(Channel.DEFAULT);
+
+ //create a message to be sent, message must implement java.io.Serializable
+ //for performance reasons you probably want them to implement java.io.Externalizable
+ Serializable myMsg = new MyMessage();
+
+ //retrieve my current members
+ 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>
+ </li>
+ </ul>
+ <p>
+ Simple yeah? There is a lot more to Tribes than we have shown, hopefully the docs will be able
+ to explain more to you. Remember, that we are always interested in suggestions, improvements, bug fixes
+ and anything that you think would help this project.
+ </p>
+ <p>
+ Note: Tribes is currently built for JDK1.5, you can run on JDK1.4 by a small modifications to locks used from the <code>java.util.concurrent</code> package.
+ </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="What is Tribes"><!--()--></a><a name="What_is_Tribes"><strong>What is Tribes</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ Tribes is a messaging framework with group communication abilities. Tribes allows you to send and receive
+ messages over a network, it also allows for dynamic discovery of other nodes in the network.<br>
+ And that is the short story, it really is as simple as that. What makes Tribes useful and unique will be
+ described in the section below.<br>
+ </p>
+ <p>
+ The Tribes module was started early 2006 and a small part of the code base comes from the clustering module
+ that has been existing since 2003 or 2004.
+ The current cluster implementation has several short comings and many workarounds were created due
+ to the complexity in group communication. Long story short, what should have been two modules a long time
+ ago, will be now. Tribes takes out the complexity of messaging from the replication module and becomes
+ a fully independent and highly flexible group communication module.<br>
+ </p>
+ <p>
+ In Tomcat the old <code>modules/cluster</code> has now become <code>modules/groupcom</code>(Tribes) and
+ <code>modules/ha</code> (replication). This will allow development to proceed and let the developers
+ focus on the issues they are actually working on rather than getting boggled down in details of a module
+ they are not interested in. The understanding is that both communication and replication are complex enough,
+ and when trying to develop them in the same module, well you know, it becomes a cluster :)<br>
+ </p>
+ <p>
+ Tribes allows for guaranteed messaging, and can be customized in many ways. Why is this important?<br>
+ Well, you as a developer want to know that the messages you are sending are reaching their destination.
+ More than that, if a message doesn't reach its destination, the application on top of Tribes will be notified
+ that the message was never sent, and what node it failed.
+ </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="Why another messaging framework"><!--()--></a><a name="Why_another_messaging_framework"><strong>Why another messaging framework</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ I am a big fan of reusing code and would never dream of developing something if someone else has already
+ done it and it was available to me and the community I try to serve.<br>
+ When I did my research to improve the clustering module I was constantly faced with a few obstacles:<br>
+ 1. The framework wasn't flexible enough<br>
+ 2. The framework was licensed in a way that neither I nor the community could use it<br>
+ 3. Several features that I needed were missing<br>
+ 4. Messaging was guaranteed, but no feedback was reported to me<br>
+ 5. The semantics of my message delivery had to be configured before runtime<br>
+ And the list continues...
+ </p>
+ <p>
+ So I came up with Tribes, to address these issues and other issues that came along.
+ When designing Tribes I wanted to make sure I didn't lose any of the flexibility and
+ delivery semantics that the existing frameworks already delivered. The goal was to create a framework
+ that could do everything that the others already did, but to provide more flexibility for the application
+ developer. In the next section will give you the high level overview of what features tribes offers or will offer.
+ </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="Feature Overview"><!--()--></a><a name="Feature_Overview"><strong>Feature Overview</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ To give you an idea of the feature set I will list it out here.
+ Some of the features are not yet completed, if that is the case they are marked accordingly.
+ </p>
+ <p>
+ <b>Pluggable modules</b><br>
+ Tribes is built using interfaces. Any of the modules or components that are part of Tribes can be swapped out
+ to customize your own Tribes implementation.
+ </p>
+ <p>
+ <b>Guaranteed Messaging</b><br>
+ 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. 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.
+ </p>
+ <p>
+ <b>Different Guarantee Levels</b><br>
+ There are three different levels of delivery guarantee when a message is sent.<br>
+ <ol>
+ <li>IO Based send guarantee. - fastest, least reliable<br>
+ This means that Tribes considers the message transfer to be successful
+ if the message was sent to the socket send buffer and accepted.<br>
+ On blocking IO, this would be <code>socket.getOutputStream().write(msg)</code><br>
+ On non blocking IO, this would be <code>socketChannel.write()</code>, and the buffer byte buffer gets emptied
+ followed by a <code>socketChannel.read()</code> to ensure the channel still open.
+ The <code>read()</code> has been added since <code>write()</code> will succeed if the connection has been "closed"
+ when using NIO.
+ </li>
+ <li>ACK based. - recommended, guaranteed delivery<br>
+ When the message has been received on a remote node, an ACK is sent back to the sender,
+ indicating that the message was received successfully.
+ </li>
+ <li>SYNC_ACK based. - guaranteed delivery, guaranteed processed, slowest<br>
+ When the message has been received on a remote node, the node will process
+ the message and if the message was processed successfully, an ACK is sent back to the sender
+ indicating that the message was received and processed successfully.
+ If the message was received, but processing it failed, an ACK_FAIL will be sent back
+ to the sender. This is a unique feature that adds an incredible amount value to the application
+ developer. Most frameworks here will tell you that the message was delivered, and the application
+ developer has to build in logic on whether the message was actually processed properly by the application
+ on the remote node. If configured, Tribes will throw an exception when it receives an ACK_FAIL
+ and associate that exception with the member that didn't process the message.
+ </li>
+ </ol>
+ You can of course write even more sophisticated guarantee levels, and some of them will be mentioned later on
+ in the documentation. One mentionable level would be a 2-Phase-Commit, where the remote applications don't receive
+ the message until all nodes have received the message. Sort of like a all-or-nothing protocol.
+ </p>
+ <p>
+ <b>Per Message Delivery Attributes</b><br>
+ Perhaps the feature that makes Tribes stand out from the crowd of group communication frameworks.
+ Tribes enables you to send to decide what delivery semantics a message transfer should have on a per
+ 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>
+ 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
+ Message_4 - asynchronous, SYNC_ACK and call back when the message is processed on the remote nodes
+ Message_5 - totally ordered, this message should be received in the same order on all nodes that have been
+ send totally ordered
+ Message_6 - asynchronous and totally ordered
+ Message_7 - RPC message, send a message, wait for all remote nodes to reply before returning
+ 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>
+ 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>
+ Imagine a shared transactional cache, probably >90% are reads, and the dirty reads should be completely
+ unordered and delivered as fast as possible. But transactional writes on the other hand, have to
+ be ordered so that no cache gets corrupted. With tribes you would send the write messages totally ordered,
+ while the read messages you simple fire to achieve highest throughput.<br>
+ There are probably better examples on how this powerful feature can be used, so use your imagination and
+ your experience to think of how this could benefit you in your application.
+ </p>
+ <p>
+ <b>Interceptor based message processing</b><br>
+ Tribes uses a customizable interceptor stack to process messages that are sent and received.<br>
+ <i>So what, all frameworks have this!</i><br>
+ Yes, but in Tribes interceptors can react to a message based on the per-message-attributes
+ that are sent runtime. Meaning, that if you add a encryption interceptor that encrypts message
+ you can decide if this interceptor will encrypt all messages, or only certain messages that are decided
+ by the applications running on top of Tribes.<br>
+ This is how Tribes is able to send some messages totally ordered and others fire and forget style
+ like the example above.<br>
+ The number of interceptors that are available will keep growing, and we would appreciate any contributions
+ that you might have.
+ </p>
+ <p>
+ <b>Threadless Interceptor stack</b>
+ The interceptor don't require any separate threads to perform their message manipulation.<br>
+ Messages that are sent will piggy back on the thread that is sending them all the way through transmission.
+ The exception is the <code>MessageDispatchInterceptor</code> that will queue up the message
+ and send it on a separate thread for asynchronous message delivery.
+ Messages received are controlled by a thread pool in the <code>receiver</code> component.<br>
+ The channel object can send a <code>heartbeat()</code> through the interceptor stack to allow
+ for timeouts, cleanup and other events.<br>
+ The <code>MessageDispatchInterceptor</code> is the only interceptor that is configured by default.
+ </p>
+ <p>
+ <b>Parallel Delivery</b><br>
+ Tribes support parallel delivery of messages. Meaning that node_A could send three messages to node_B in
+ parallel. This feature becomes useful when sending messages with different delivery semantics.
+ Otherwise if Message_1 was sent totally ordered, Message_2 would have to wait for that message to complete.<br>
+ Through NIO, Tribes is also able to send a message to several receivers at the same time on the same thread.
+ </p>
+ <p>
+ <b>Silent Member Messaging</b><br>
+ With Tribes you are able to send messages to members that are not in your group.
+ So by default, you can already send messages over a wide area network, even though the dynamic discover
+ module today is limited to local area networks by using multicast for dynamic node discovery.
+ Of course, the membership component will be expanded to support WAN memberships in the future.
+ But this is very useful, when you want to hide members from the rest of the group and only communicate with them
+ </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.
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/membership.html b/webapps/docs/tribes/membership.html
new file mode 100644
index 0000000..859b1d2
--- /dev/null
+++ b/webapps/docs/tribes/membership.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/setup.html b/webapps/docs/tribes/setup.html
new file mode 100644
index 0000000..18cfc64
--- /dev/null
+++ b/webapps/docs/tribes/setup.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/status.html b/webapps/docs/tribes/status.html
new file mode 100644
index 0000000..f8ddf58
--- /dev/null
+++ b/webapps/docs/tribes/status.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/tribes/transport.html b/webapps/docs/tribes/transport.html
new file mode 100644
index 0000000..782a4f8
--- /dev/null
+++ b/webapps/docs/tribes/transport.html
@@ -0,0 +1,48 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tribes - The Tomcat Cluster Communication Module (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/virtual-hosting-howto.html b/webapps/docs/virtual-hosting-howto.html
new file mode 100644
index 0000000..0d85e4f
--- /dev/null
+++ b/webapps/docs/virtual-hosting-howto.html
@@ -0,0 +1,150 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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>
+ For the sake of this how-to, assume you have a development host with two
+ host names, <code>ren</code> and <code>stimpy</code>. Let's also assume
+ one instance of Tomcat running, so <code>$CATALINA_HOME</code> refers to
+ wherever it's installed, perhaps <code>/usr/local/tomcat</code>.
+ </p>
+ <p>
+ Also, this how-to uses Unix-style path separators and commands; if you're
+ 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>
+<Engine name="Catalina" defaultHost="ren">
+ <Host name="ren" appBase="renapps"/>
+ <Host name="stimpy" appBase="stimpyapps"/>
+</Engine>
+ </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>
+ Note that the directory structures under the appBase for each host should
+ not overlap each other.
+ </p>
+ <p>
+ Consult the configuration documentation for other attributes of the
+ <a href="config/engine.html">Engine</a> and <a href="config/host.html">
+ Host</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="Webapps Directory"><!--()--></a><a name="Webapps_Directory"><strong>Webapps Directory</strong></a></font></td></tr><tr><td><blockquote>
+ <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>
+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>
+ </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
+ example, to deploy the <code>foobar</code> context as a war file in
+ the <code>ren</code> host, use
+ <code>$CATALINA_HOME/renapps/foobar.war</code>. Note that the
+ default or ROOT context for <code>ren</code> would be deployed as
+ <code>$CATALINA_HOME/renapps/ROOT.war</code> (WAR) or
+ <code>$CATALINA_HOME/renapps/ROOT</code> (directory).
+ </p>
+ <p><strong>NOTE: The <code>docBase</code> for a context should never be
+ the same as the <code>appBase</code> for a host.</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="context.xml - approach #1"><!--()--></a><a name="context.xml_-_approach__1"><strong>context.xml - approach #1</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ Within your Context, create a <code>META-INF</code> directory and then
+ place your Context definition in it in a file named
+ <code>context.xml</code>. i.e.
+ <code>$CATALINA_HOME/renapps/ROOT/META-INF/context.xml</code>
+ This makes deployment easier, particularly if you're distributing a WAR
+ file.
+ </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.xml - approach #2"><!--()--></a><a name="context.xml_-_approach__2"><strong>context.xml - approach #2</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ 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>
+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>
+ <p>
+ Note that the ending directory name "Catalina" represents the
+ <code>name</code> attribute of the
+ <a href="config/engine.html">Engine</a> element as shown above.
+ </p>
+ <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>
+$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>
+ <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>
+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>
+ </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>
+ Consult the configuration documentation for other attributes of the
+ <a href="config/context.html">Context</a> element.
+ </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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/web-socket-howto.html b/webapps/docs/web-socket-howto.html
new file mode 100644
index 0000000..b3633b2
--- /dev/null
+++ b/webapps/docs/web-socket-howto.html
@@ -0,0 +1,80 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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></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>. This feature is
+ not yet finalised and you are encouraged to provide feedback in the form
+ of bug reports (via
+ <a href="https://issues.apache.org/bugzilla">Bugzilla</a>), suggested API
+ changes (via the <a href="mailto:dev@tomcat.apache.org">dev list</a>) or
+ other comments (again via the <a href="mailto:dev@tomcat.apache.org">dev
+ 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="Application development"><!--()--></a><a name="Application_development"><strong>Application development</strong></a></font></td></tr><tr><td><blockquote>
+<p>The API used for application development has not yet been finalised. Rather
+ than document something here that will quickly be out of date, 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/">
+ 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>
+
+<p>Do keep in mind that the API is fluid and is likely to change, possibly
+ significantly, between point releases. The documentation will be updated once
+ the API is considered stable (unlikely to be until JSR 356 is complete).</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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/windows-auth-howto.html b/webapps/docs/windows-auth-howto.html
new file mode 100644
index 0000000..e45c5cc
--- /dev/null
+++ b/webapps/docs/windows-auth-howto.html
@@ -0,0 +1,311 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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">Tomcat instance</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><strong>This documentation is a work in progress. There are a number of
+outstanding questions around the edge cases that require further
+testing.</strong> These include:
+</p>
+<ul>
+<li>Does the domain name have to be in upper case?</li>
+<li>Does the SPN have to start with HTTP/...?</li>
+<li>Can a port number be appended to the end of the host in the SPN?</li>
+<li>Can the domain be left off the user in the ktpass command?</li>
+<li>What are the limitations on the account that Tomcat can run as? SPN
+ associated account works, domain admin works, local admin doesn't
+ work</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>
+ <service class>/<host>:<port>/<service name></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 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>setspn -A HTTP/win-tc01.dev.local tc01</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>
+ <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 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>ktpass /out c:\tomcat.keytab /mapuser tc01@DEV.LOCAL
+ /princ HTTP/win-tc01.dev.local@DEV.LOCAL
+ /pass tc01pass /kvno 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></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"><!--()--></a><a name="Tomcat_instance"><strong>Tomcat instance</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 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>[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</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>
+ The location of this file can be changed by setting the
+ <code>java.security.krb5.conf</code> systm 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 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>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;
+};</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>
+ 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>
+ <li>The system property <code>javax.security.auth.useSubjectCredsOnly</code>
+ is automatically set to the required value of false if a web application is
+ configured to use the SPNEGO authentication method.</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="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 > Internet
+ Options > 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/GMOxDOC21/using-spengo-in-geronimo.html#UsingSpengoingeronimo-SettinguptheActiveDirectoryDomainController">
+ 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/">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"> 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/">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/">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>.</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/">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">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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/webapps/docs/windows-service-howto.html b/webapps/docs/windows-service-howto.html
new file mode 100644
index 0000000..2fb0f63
--- /dev/null
+++ b/webapps/docs/windows-service-howto.html
@@ -0,0 +1,460 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.42) - 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;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ 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.42, Jul 2 2013</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 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</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><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="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="#Tomcat7_service_application">Tomcat7 service application</a></li><li><a href="#Tomcat7w_monitor_application">Tomcat7w 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="Tomcat7 service application"><!--()--></a><a name="Tomcat7_service_application"><strong>Tomcat7 service application</strong></a></font></td></tr><tr><td><blockquote>
+<p>
+ <b>Tomcat7</b> is a service application for running Tomcat7 as NT 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="Tomcat7w monitor application"><!--()--></a><a name="Tomcat7w_monitor_application"><strong>Tomcat7w monitor application</strong></a></font></td></tr><tr><td><blockquote>
+<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>
+ <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>
+ <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>
+ <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 Tomcat7</td>
+ </tr>
+ <tr><th>//RS//</th>
+ <td>Run the service</td>
+ <td>Called only from ServiceManager</td>
+ </tr>
+ <tr><th>//SS//</th>
+ <td>Stop the service</td>
+ <td></td>
+ </tr>
+ <tr><th>//US//</th>
+ <td>Update service parameters</td>
+ <td></td>
+ </tr>
+ <tr><th>//IS//</th>
+ <td>Install service</td>
+ <td></td>
+ </tr>
+ <tr><th>//DS//</th>
+ <td>Delete service</td>
+ <td>Stops the service if running</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 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>.
+ If the command line is prefixed with <b>++</b> then it's value will
+ 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>
+<p> as command line parameter.</p>
+<p>
+ <table>
+ <tr>
+ <th>ParameterName</th>
+ <th>Default</th>
+ <th>Description</th>
+ </tr>
+ <tr>
+ <td>--Description</td>
+ <td></td>
+ <td>Service name description (maximum 1024 characters)</td>
+ </tr>
+ <tr>
+ <td>--DisplayName</td>
+ <td>ServiceName</td>
+ <td>Service display name</td>
+ </tr>
+ <tr>
+ <td>--Install</td>
+ <td>procrun.exe //RS//ServiceName</td>
+ <td>Install image</td>
+ </tr>
+ <tr>
+ <td>--Startup</td>
+ <td>manual</td>
+ <td>Service startup mode can be either <b>auto</b> or <b>manual</b></td>
+ </tr>
+ <tr>
+ <td>--DependsOn</td>
+ <td></td>
+ <td>List of services that this service depend on. Dependent services
+ are separated using either <b>#</b> or <b>;</b> characters</td>
+ </tr>
+ <tr>
+ <td>--Environment</td>
+ <td></td>
+ <td>List of environment variables that will be provided to the service
+ in the form <b>key=value</b>. They are separated using either
+ <b>#</b> or <b>;</b> characters. If you need to use either the <b>#</b>
+ or <b>;</b> character within a value then the entire value must be
+ enclosed inside single quotes.</td>
+ </tr>
+ <tr>
+ <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>
+ </tr>
+ <tr>
+ <td>--Password</td>
+ <td></td>
+ <td>Password for user account set by --User parameter</td>
+ </tr>
+ <tr>
+ <td>--JavaHome</td>
+ <td>JAVA_HOME</td>
+ <td>Set a different JAVA_HOME than defined by JAVA_HOME environment
+ variable</td>
+ </tr>
+ <tr>
+ <td>--Jvm</td>
+ <td>auto</td>
+ <td>Use either <b>auto</b> or specify the full path to the <b>jvm.dll</b>.
+ You can use the environment variable expansion here.</td>
+ </tr>
+ <tr>
+ <td>--JvmOptions</td>
+ <td>-Xrs</td>
+ <td>List of options in the form of <b>-D</b> or <b>-X</b> that will be
+ passed to the JVM. The options are separated using either
+ <b>#</b> or <b>;</b> characters.</td>
+ </tr>
+ <tr>
+ <td>--Classpath</td>
+ <td></td>
+ <td>Set the Java classpath</td>
+ </tr>
+ <tr>
+ <td>--JvmMs</td>
+ <td></td>
+ <td>Initial memory pool size in MB</td>
+ </tr>
+ <tr>
+ <td>--JvmMx</td>
+ <td></td>
+ <td>Maximum memory pool size in MB</td>
+ </tr>
+ <tr>
+ <td>--JvmSs</td>
+ <td></td>
+ <td>Thread stack size in KB</td>
+ </tr>
+ <tr>
+ <tr>
+ <td>--StartImage</td>
+ <td></td>
+ <td>Executable that will be run.</td>
+ </tr>
+ <tr>
+ <td>--StartPath</td>
+ <td></td>
+ <td>Working path for the start image executable.</td>
+ </tr>
+ <tr>
+ <td>--StartClass</td>
+ <td></td>
+ <td>Class that will be used for startup.</td>
+ </tr>
+ <tr>
+ <td>--StartParams</td>
+ <td></td>
+ <td>List of parameters that will be passed to either StartImage or
+ StartClass. Parameters are separated using either <b>#</b> or
+ <b>;</b> character.</td>
+ </tr>
+ <tr>
+ <td>--StartMethod</td>
+ <td>Main</td>
+ <td>Method name if differs then main</td>
+ </tr>
+ <tr>
+ <td>--StartMode</td>
+ <td>executable</td>
+ <td>Can one of <b>jvm</b> <b>java</b> or <b>exe</b></td>
+ </tr>
+ <td>--StopImage</td>
+ <td></td>
+ <td>Executable that will be run on Stop service signal.</td>
+ </tr>
+ <tr>
+ <td>--StopPath</td>
+ <td></td>
+ <td>Working path for the stop image executable.</td>
+ </tr>
+ <tr>
+ <td>--StopClass</td>
+ <td></td>
+ <td>Class that will be used on Stop service signal.</td>
+ </tr>
+ <tr>
+ <td>--StopParams</td>
+ <td></td>
+ <td>List of parameters that will be passed to either StopImage or
+ StopClass. Parameters are separated using either <b>#</b> or
+ <b>;</b> character.</td>
+ </tr>
+ <tr>
+ <td>--StopMethod</td>
+ <td>Main</td>
+ <td>Method name if differs then main</td>
+ </tr>
+ <tr>
+ <td>--StopMode</td>
+ <td>executable</td>
+ <td>Can one of <b>jvm</b> <b>java</b> or <b>exe</b></td>
+ </tr>
+ <tr>
+ <td>--StopTimeout</td>
+ <td>No Timeout</td>
+ <td>Defines the timeout in seconds that procrun waits for service to
+ exit gracefully.</td>
+ </tr>
+ <tr>
+ <td>--LogPath</td>
+ <td>working path</td>
+ <td>Defines the path for logging</td>
+ </tr>
+ <tr>
+ <td>--LogPrefix</td>
+ <td>jakarta_service</td>
+ <td>Defines the service log filename</td>
+ </tr>
+ <tr>
+ <td>--LogLevel</td>
+ <td>INFO</td>
+ <td>Defines the logging level and can be either <b>error</b>,
+ <b>info</b>, <b>warn</b> or <b>debug</b></td>
+ </tr>
+ <tr>
+ <td>--StdOutput</td>
+ <td></td>
+ <td>Redirected stdout filename</td>
+ </tr>
+ <tr>
+ <td>--StdError</td>
+ <td></td>
+ <td>Redirected stderr filename</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. 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 other operating system with User
+Account Control (UAC) you must either disable UAC or right-click on cmd.exe and
+select "Run as administrator" in order to run this script. If UAC is enabled
+neither being logged on with an Administrator account, nor using the
+<code>/user</code> switch is sufficient.
+</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 'Tomcat7'
+C:\> 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>There is a 2nd optional parameter that lets you specify the name of the
+service, as displayed in Windows services.</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 'MyService'
+C:\> service.bat install MyService
+</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 tomcat7.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 'Tomcat7'
+C:\> tomcat7 //IS//Tomcat7 --DisplayName="Apache Tomcat 7" \
+C:\> --Install="C:\Program Files\Tomcat\bin\tomcat7.exe" --Jvm=auto \
+C:\> --StartMode=jvm --StopMode=jvm \
+C:\> --StartClass=org.apache.catalina.startup.Bootstrap --StartParams=start \
+C:\> --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>
+</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 'Tomcat7'
+C:\> tomcat7 //US//Tomcat7 --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \
+C:\> --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>
+</p>
+<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>
+Update the service named 'MyService'
+C:\> tomcat7 //US//MyService --Description="Apache Tomcat Server - http://tomcat.apache.org/ " \
+C:\> --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>
+</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="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.</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 'Tomcat7'
+C:\> tomcat7 //DS//Tomcat7
+</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 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 'MyService'
+C:\> tomcat7 //DS//MyService
+</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="#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 tomcat7.exe to testservice.exe then you can just execute the
+testservice.exe and this command mode will be executed by default.</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 'Tomcat7' in console mode
+C:\> tomcat7 //TS//Tomcat7 [additional arguments]
+Or simply execute:
+C:\> tomcat7
+</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="#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
+<pre><Connector port="8080" ...</pre> 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>
+<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>
+set CATALINA_HOME=c:\tomcat_7
+set CATALINA_BASE=c:\tomcat_7\instances\instance1
+service install instance1
+</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>
+To modify the service settings, you can run <b>tomcat7w //ES//instance1</b>.
+</p>
+<p>
+For additional instances, create additional instance folder, update the
+CATALINA_BASE environment variable, and run the service install again.</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>
+set CATALINA_BASE=c:\tomcat_7\instances\instance2
+service install instance2
+</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><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&A section.<br><br>
+ The Apache Comments System is explained <a href="/tomcat-7.0-doc/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 © 1999-2013, Apache Software Foundation
+ </em></font></div></td></tr></table></body></html>
\ No newline at end of file