- Add the base webapps and stuff, so they're there (not built yet).
authorremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 7 Jul 2006 22:40:04 +0000 (22:40 +0000)
committerremm <remm@13f79535-47bb-0310-9956-ffa450edef68>
Fri, 7 Jul 2006 22:40:04 +0000 (22:40 +0000)
git-svn-id: https://svn.apache.org/repos/asf/tomcat/tc6.0.x/trunk@420006 13f79535-47bb-0310-9956-ffa450edef68

125 files changed:
res/welcome.bin.html [new file with mode: 0644]
res/welcome.main.html [new file with mode: 0644]
webapps/docs/META-INF/context.xml [new file with mode: 0644]
webapps/docs/WEB-INF/web.xml [new file with mode: 0644]
webapps/docs/api/index.html [new file with mode: 0644]
webapps/docs/appdev/build.xml.txt [new file with mode: 0644]
webapps/docs/appdev/deployment.xml [new file with mode: 0644]
webapps/docs/appdev/index.xml [new file with mode: 0644]
webapps/docs/appdev/installation.xml [new file with mode: 0644]
webapps/docs/appdev/introduction.xml [new file with mode: 0644]
webapps/docs/appdev/processes.xml [new file with mode: 0644]
webapps/docs/appdev/project.xml [new file with mode: 0644]
webapps/docs/appdev/sample/docs/README.txt [new file with mode: 0644]
webapps/docs/appdev/sample/index.html [new file with mode: 0644]
webapps/docs/appdev/sample/sample.war [new file with mode: 0644]
webapps/docs/appdev/sample/src/mypackage/Hello.java [new file with mode: 0644]
webapps/docs/appdev/sample/web/WEB-INF/web.xml [new file with mode: 0644]
webapps/docs/appdev/sample/web/hello.jsp [new file with mode: 0644]
webapps/docs/appdev/sample/web/images/tomcat.gif [new file with mode: 0644]
webapps/docs/appdev/sample/web/index.html [new file with mode: 0644]
webapps/docs/appdev/source.xml [new file with mode: 0644]
webapps/docs/appdev/web.xml.txt [new file with mode: 0644]
webapps/docs/apr.xml [new file with mode: 0644]
webapps/docs/architecture/index.xml [new file with mode: 0644]
webapps/docs/architecture/overview.xml [new file with mode: 0644]
webapps/docs/architecture/project.xml [new file with mode: 0644]
webapps/docs/architecture/requestProcess.xml [new file with mode: 0644]
webapps/docs/architecture/requestProcess/requestProcess.pdf [new file with mode: 0644]
webapps/docs/architecture/requestProcess/roseModel.mdl [new file with mode: 0644]
webapps/docs/architecture/startup.xml [new file with mode: 0644]
webapps/docs/architecture/startup/serverStartup.pdf [new file with mode: 0644]
webapps/docs/architecture/startup/serverStartup.txt [new file with mode: 0644]
webapps/docs/balancer-howto.xml [new file with mode: 0644]
webapps/docs/build.xml [new file with mode: 0644]
webapps/docs/building.xml [new file with mode: 0644]
webapps/docs/cgi-howto.xml [new file with mode: 0644]
webapps/docs/changelog.xml [new file with mode: 0644]
webapps/docs/class-loader-howto.xml [new file with mode: 0644]
webapps/docs/cluster-howto.xml [new file with mode: 0644]
webapps/docs/config/ajp.xml [new file with mode: 0644]
webapps/docs/config/context.xml [new file with mode: 0644]
webapps/docs/config/engine.xml [new file with mode: 0644]
webapps/docs/config/globalresources.xml [new file with mode: 0644]
webapps/docs/config/host.xml [new file with mode: 0644]
webapps/docs/config/http.xml [new file with mode: 0644]
webapps/docs/config/index.xml [new file with mode: 0644]
webapps/docs/config/loader.xml [new file with mode: 0644]
webapps/docs/config/manager.xml [new file with mode: 0644]
webapps/docs/config/project.xml [new file with mode: 0644]
webapps/docs/config/realm.xml [new file with mode: 0644]
webapps/docs/config/resources.xml [new file with mode: 0644]
webapps/docs/config/server.xml [new file with mode: 0644]
webapps/docs/config/service.xml [new file with mode: 0644]
webapps/docs/config/valve.xml [new file with mode: 0644]
webapps/docs/connectors.xml [new file with mode: 0644]
webapps/docs/default-servlet.xml [new file with mode: 0644]
webapps/docs/deployer-howto.xml [new file with mode: 0644]
webapps/docs/developers.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-admin-apps.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-admin-objects.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-admin-opers.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-default.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-invoker.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-jdbc-realm.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-jndi-realm.xml [new file with mode: 0644]
webapps/docs/funcspecs/fs-memory-realm.xml [new file with mode: 0644]
webapps/docs/funcspecs/index.xml [new file with mode: 0644]
webapps/docs/funcspecs/mbean-names.xml [new file with mode: 0644]
webapps/docs/funcspecs/project.xml [new file with mode: 0644]
webapps/docs/html-manager-howto.xml [new file with mode: 0644]
webapps/docs/images/add.gif [new file with mode: 0644]
webapps/docs/images/asf-logo.gif [new file with mode: 0644]
webapps/docs/images/code.gif [new file with mode: 0644]
webapps/docs/images/design.gif [new file with mode: 0644]
webapps/docs/images/docs.gif [new file with mode: 0644]
webapps/docs/images/fix.gif [new file with mode: 0644]
webapps/docs/images/printer.gif [new file with mode: 0644]
webapps/docs/images/tomcat.gif [new file with mode: 0644]
webapps/docs/images/tomcat.svg [new file with mode: 0644]
webapps/docs/images/update.gif [new file with mode: 0644]
webapps/docs/images/void.gif [new file with mode: 0644]
webapps/docs/index.xml [new file with mode: 0644]
webapps/docs/introduction.xml [new file with mode: 0644]
webapps/docs/jasper-howto.xml [new file with mode: 0644]
webapps/docs/jndi-datasource-examples-howto.xml [new file with mode: 0644]
webapps/docs/jndi-resources-howto.xml [new file with mode: 0644]
webapps/docs/logging.xml [new file with mode: 0644]
webapps/docs/manager-howto.xml [new file with mode: 0644]
webapps/docs/mbeans-descriptor-howto.xml [new file with mode: 0644]
webapps/docs/monitoring.xml [new file with mode: 0644]
webapps/docs/project.xml [new file with mode: 0644]
webapps/docs/proxy-howto.xml [new file with mode: 0644]
webapps/docs/realm-howto.xml [new file with mode: 0644]
webapps/docs/security-manager-howto.xml [new file with mode: 0644]
webapps/docs/setup.xml [new file with mode: 0644]
webapps/docs/ssi-howto.xml [new file with mode: 0644]
webapps/docs/ssl-howto.xml [new file with mode: 0644]
webapps/docs/status.xml [new file with mode: 0644]
webapps/docs/tomcat-docs.xsl [new file with mode: 0644]
webapps/docs/windows-service-howto.xml [new file with mode: 0644]
webapps/host-manager/WEB-INF/web.xml [new file with mode: 0644]
webapps/host-manager/host-manager.xml [new file with mode: 0644]
webapps/host-manager/images/add.gif [new file with mode: 0644]
webapps/host-manager/images/asf-logo.gif [new file with mode: 0644]
webapps/host-manager/images/code.gif [new file with mode: 0644]
webapps/host-manager/images/design.gif [new file with mode: 0644]
webapps/host-manager/images/docs.gif [new file with mode: 0644]
webapps/host-manager/images/fix.gif [new file with mode: 0644]
webapps/host-manager/images/tomcat.gif [new file with mode: 0644]
webapps/host-manager/images/update.gif [new file with mode: 0644]
webapps/host-manager/images/void.gif [new file with mode: 0644]
webapps/host-manager/manager.xml [new file with mode: 0644]
webapps/manager/WEB-INF/web.xml [new file with mode: 0644]
webapps/manager/images/add.gif [new file with mode: 0644]
webapps/manager/images/asf-logo.gif [new file with mode: 0644]
webapps/manager/images/code.gif [new file with mode: 0644]
webapps/manager/images/design.gif [new file with mode: 0644]
webapps/manager/images/docs.gif [new file with mode: 0644]
webapps/manager/images/fix.gif [new file with mode: 0644]
webapps/manager/images/tomcat.gif [new file with mode: 0644]
webapps/manager/images/update.gif [new file with mode: 0644]
webapps/manager/images/void.gif [new file with mode: 0644]
webapps/manager/manager.xml [new file with mode: 0644]
webapps/manager/status.xsd [new file with mode: 0644]
webapps/manager/xform.xsl [new file with mode: 0644]

diff --git a/res/welcome.bin.html b/res/welcome.bin.html
new file mode 100644 (file)
index 0000000..5e5c8ca
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML><HEAD><TITLE>Apache Tomcat @VERSION@</TITLE>
+<META http-equiv=Content-Type content="text/html">
+</HEAD>
+<BODY>
+<P>
+<H3>Apache Tomcat @VERSION@</H3>
+<P></P>
+<p>Useful references:
+<ul>
+<li><a href="RELEASE-NOTES">Release notes</a>, with important information 
+about known issues</li>
+<li><a href="http://tomcat.apache.org/tomcat-5.5-doc/changelog.html">Changelog</a></li>
+<li><a href="http://tomcat.apache.org/tomcat-5.5-doc/status.html">Status</a></li>
+</ul>
+</p>
+
+<p><b>NOTE: The tar files in this distribution use GNU tar extensions, 
+and must be untarred with a GNU compatible version of tar. The version 
+of <CODE>tar</CODE> on Solaris and Mac OS X will not work with 
+these files.</b></P>
+
+<p><font color="red">Tomcat 5.5 requires JRE 5.0 by default.  Read the 
+RELEASE-NOTES and the RUNNING.txt file in the distribution for more details.
+</font></p>
+
+<p>Packaging Details (or "What Should I Download?")
+  <ul>
+    <li>apache-tomcat-[version].zip or .tar.gz: base distro, all non-embedded users download this.</li>
+    <li>apache-tomcat-[version].exe: Windows installer for Tomcat.  Please note that while this distribution includes the vast majority of the base distribution, some of the command-line scripts for launching Tomcat are not included.  This distribution is intended for those users planning to launch Tomcat through the Windows shortcuts or services.</li>
+    <li>apache-tomcat-[version]-admin.zip or .tar.gz: the Tomcat Administration webapp only.</li>
+    <li>apache-tomcat-[version]-compat.zip or .tar.gz: required in addition to the base distro for using Tomcat with a Java 1.4 environment.</li>
+    <li>apache-tomcat-[version]-deployer.zip or .tar.gz: the standalone Tomcat Web Application Deployer.</li>
+    <li>apache-tomcat-[version]-embed.zip or .tar.gz: for using Tomcat only as an embedded servlet container.</li>
+  </ul>
+</p>
+
+<P>Thank you for using <A href="http://tomcat.apache.org/">Tomcat</A>!. 
+</P>
+<P><B>The Apache Tomcat Project</B> <BR><A 
+href="http://tomcat.apache.org/">http://tomcat.apache.org/</A> </P>
+<P>
+<P></P></BODY></HTML>
diff --git a/res/welcome.main.html b/res/welcome.main.html
new file mode 100644 (file)
index 0000000..2543490
--- /dev/null
@@ -0,0 +1,43 @@
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
+<HTML><HEAD><TITLE>Apache Tomcat @VERSION@</TITLE>
+<META http-equiv=Content-Type content="text/html">
+</HEAD>
+<BODY>
+<P>
+<H3>Apache Tomcat @VERSION@</H3>
+<P></P>
+<p>Useful references:
+<ul>
+<li><a href="RELEASE-NOTES">Release notes</a>, with important information 
+about known issues</li>
+<li><a href="http://tomcat.apache.org/tomcat-5.5-doc/changelog.html">Changelog</a></li>
+<li><a href="http://tomcat.apache.org/tomcat-5.5-doc/status.html">Status</a></li>
+</ul>
+</p>
+
+<p><b>NOTE: The tar files in this distribution use GNU tar extensions, 
+and must be untarred with a GNU compatible version of tar. The version 
+of <CODE>tar</CODE> on Solaris and Mac OS X will not work with 
+these files.</b></P>
+
+<p><font color="red">Tomcat 5.5 requires JRE 5.0 by default.  Read the 
+RELEASE-NOTES and the RUNNING.txt file in the distribution for more details.
+</font></p>
+
+<p>Packaging Details (or "What Should I Download?")
+  <ul>
+    <li>apache-tomcat-[version].zip or .tar.gz: base distro, all non-embedded users download this.</li>
+    <li>apache-tomcat-[version].exe: Windows installer with base distro contents + Windows installation.</li>
+    <li>apache-tomcat-[version]-admin.zip or .tar.gz: the Tomcat Administration webapp only.</li>
+    <li>apache-tomcat-[version]-compat.zip or .tar.gz: required in addition to the base distro for using tomcat with a Java 1.4 environment.</li>
+    <li>apache-tomcat-[version]-deployer.zip or .tar.gz: the standalone Tomcat Web Application Deployer.</li>
+    <li>apache-tomcat-[version]-embed.zip or .tar.gz: for using Tomcat only as an embedded servlet container.</li>
+  </ul>
+</p>
+
+<P>Thank you for using <A href="http://tomcat.apache.org/">Tomcat</A>!. 
+</P>
+<P><B>The Apache Tomcat Project</B> <BR><A 
+href="http://tomcat.apache.org/">http://tomcat.apache.org/</A> </P>
+<P>
+<P></P></BODY></HTML>
diff --git a/webapps/docs/META-INF/context.xml b/webapps/docs/META-INF/context.xml
new file mode 100644 (file)
index 0000000..228184c
--- /dev/null
@@ -0,0 +1,12 @@
+<!--
+
+    Context configuration file for the Tomcat Balancer Web App
+    This is only needed to keep the distribution small and avoid duplicating
+    commons libraries
+
+    $Id: context.xml 303123 2004-08-26 17:03:35Z remm $
+
+-->
+
+
+<Context antiResourceLocking="false" />
diff --git a/webapps/docs/WEB-INF/web.xml b/webapps/docs/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..3cc537d
--- /dev/null
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<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>Tomcat Documentation</display-name>
+  <description>
+     Tomcat Documentation.
+  </description>
+</web-app>
diff --git a/webapps/docs/api/index.html b/webapps/docs/api/index.html
new file mode 100644 (file)
index 0000000..780a75a
--- /dev/null
@@ -0,0 +1,17 @@
+<!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 no longer 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://jakarta.apache.org/tomcat/tomcat-6.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 (file)
index 0000000..00d7977
--- /dev/null
@@ -0,0 +1,503 @@
+<!--
+     General purpose build script for web applications and web services,
+     including enhanced support for deploying directly to a Tomcat 5
+     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 applicaiton.
+
+        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 302898 2004-05-23 19:50:44Z markt $
+-->
+
+
+<!-- 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 5.  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" 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" 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"/>
+  <property name="src.home"      value="${basedir}/src"/>
+  <property name="web.home"      value="${basedir}/web"/>
+
+
+<!-- ================== Custom Ant Task Definitions ======================= -->
+
+
+<!--
+
+  These properties define custom tasks for the Ant build tool that interact
+  with the "/manager" web application installed with Tomcat 5.  Before they
+  can be successfully utilized, you must perform the following steps:
+
+  - Copy the file "server/lib/catalina-ant.jar" from your Tomcat 5
+    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 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="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
+
+
+<!--  ==================== 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"/>
+
+
+
+<!-- ==================== 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 5
+  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 -->
+    <pathelement location="${catalina.home}/common/classes"/>
+    <fileset dir="${catalina.home}/common/endorsed">
+      <include name="*.jar"/>
+    </fileset>
+    <fileset dir="${catalina.home}/common/lib">
+      <include name="*.jar"/>
+    </fileset>
+    <pathelement location="${catalina.home}/shared/classes"/>
+    <fileset dir="${catalina.home}/shared/lib">
+      <include name="*.jar"/>
+    </fileset>
+
+  </path>
+
+
+
+<!-- ==================== 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 5 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 5 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 5 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 5 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.xml b/webapps/docs/appdev/deployment.xml
new file mode 100644 (file)
index 0000000..8802413
--- /dev/null
@@ -0,0 +1,254 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="deployment.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Deployment</title>
+  </properties>
+
+<body>
+
+
+<section name="Background">
+
+<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>
+
+</section>
+
+
+<section name="Standard Directory Layout">
+
+<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/2.3-compatible server), 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>
+
+</section>
+
+
+<section name="Shared Library Files">
+
+<p>Like most servlet containers, Tomcat 5 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.
+For the purposes of our discussion, there are two locations that are commonly
+used within a Tomcat 5 installation for shared code:</p>
+<ul>
+<li><strong>$CATALINA_HOME/common/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
+    and internal Tomcat use (such as for a JDBCRealm).
+    <br/><br/></li>
+<li><strong>$CATALINA_HOME/shared/lib</strong> - JAR files placed here are
+    visible to all web applications, but not to internal Tomcat code.  This
+    is the right place for shared libraries that are specific to your
+    application.<br/><br/></li>
+</ul>
+
+<p>Out of the box, a standard Tomcat 5 installation includes a variety
+of pre-installed shared library files, including:</p>
+<ul>
+<li>The <em>Servlet 2.4</em> and <em>JSP 2.0</em> APIs that are fundamental
+    to writing servlets and JavaServer Pages.<br/><br/></li>
+<li>An <em>XML Parser</em> compliant with the JAXP (version 1.2) APIs, so
+    your application can perform DOM-based or SAX-based processing of
+    XML documents.<br/><br/></li>
+</ul>
+
+</section>
+
+
+<section name="Web Application Deployment Descriptor">
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></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" target="_new">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 5 enforces the rules defined here when processing your application's
+<code>/WEB-INF/web.xml</code> file.  In particular, you <strong>must</strong>
+enter your descriptor elements (such as <code>&lt;filter&gt;</code>,
+<code>&lt;servlet&gt;</code>, and <code>&lt;servlet-mapping&gt;</code> in
+the order defined by the DTD (see Section 13.3).</p>
+
+</section>
+
+
+<section name="Tomcat Context Descriptor">
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+<p>A /META-INF/context.xml file can be used to define Tomcat specific
+configuration options, such as loggers, 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  The Tomcat configuration documentation contains
+information on the Context element.</p>
+
+</section>
+
+
+<section name="Deployment With Tomcat 5">
+
+<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 5 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_HOME/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_HOME/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 5 "Manager" web application to deploy and undeploy
+    web applications</em>.  Tomcat 5 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 5
+    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 5 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>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/index.xml b/webapps/docs/appdev/index.xml
new file mode 100644 (file)
index 0000000..359c5ed
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Table of Contents</title>
+  </properties>
+
+<body>
+
+
+<section name="Preface">
+
+<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>
+
+</section>
+
+
+<section name="Table of Contents">
+
+<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/" target="_new"><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>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/installation.xml b/webapps/docs/appdev/installation.xml
new file mode 100644 (file)
index 0000000..de9f9b5
--- /dev/null
@@ -0,0 +1,89 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="installation.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Installation</title>
+  </properties>
+
+<body>
+
+
+<section name="Installation">
+
+<p>In order to use Tomcat 5 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>
+
+<subsection name="JDK">
+
+<p>Tomcat 5.5 was designed to run on J2SE 5.0, but it can run on JDK 1.4
+as well, using the compatability package as detailed in the Tomcat 
+installation instructions.
+</p>
+
+<p>Compatible JDKs for many platforms (or links to where they can be found)
+are available at
+<a href="http://java.sun.com/j2se/">http://java.sun.com/j2se/</a>.</p>
+
+</subsection>
+
+<subsection name="Tomcat">
+
+<p>Binary downloads of the <strong>Tomcat</strong> server are available from
+<a href="http://jakarta.apache.org/binindex.cgi">http://jakarta.apache.org/binindex.cgi</a>.
+This manual assumes you are using the most recent release
+of Tomcat 5.  Detailed instructions for downloading and installing
+Tomcat 5 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 5 has been installed.</p>
+
+</subsection>
+
+
+<subsection name="Ant">
+
+<p>Binary downloads of the <strong>Ant</strong> build tool are available from
+<a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.
+This manual assumes you are using Ant 1.4 or later.  The instructions should
+also be compatible with later versions, but this has not been tested.</p>
+
+<p>Download and install Ant from the distribution directory mentioned above.
+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>
+
+</subsection>
+
+
+<subsection name="CVS">
+
+<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>
+
+</subsection>
+
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/introduction.xml b/webapps/docs/appdev/introduction.xml
new file mode 100644 (file)
index 0000000..43b82b7
--- /dev/null
@@ -0,0 +1,84 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="introduction.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Introduction</title>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+<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 Interactive Development
+Environment (IDE) tool, you will need to adapt the advice given here to
+the details of your particular environment.</p>
+
+</section>
+
+
+<section name="Links">
+
+<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://java.sun.com/products/jsp/download.html">http://java.sun.com/products/jsp/download.html</a> -
+    <i>JavaServer Pages (JSP) Specfication, Version 2.0</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 6), 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://java.sun.com/products/servlet/download.html">http://java.sun.com/products/servlet/download.html</a> -
+    <i>Servlet API Specification, Version 2.4</i>.  Describes the
+    programming environment that must be provided by all servlet
+    containers conforming to this specification.  In particular, you
+    will need this document to understand the web application
+    directory structure and deployment file (Chapter 9), methods of
+    mapping request URIs to servlets (Chapter 11), container managed
+    security (Chapter 12), and the syntax of the <code>web.xml</code>
+    Web Application Deployment Descriptor (Chapter 13).  The Javadoc
+    API Documentation is included in the specification, and with the
+    Tomcat download.<br/><br/></li>
+<li><a href="http://java.sun.com/j2ee/blueprints/">http://java.sun.com/j2ee/blueprints/</a> -
+    <i>Sun BluePrints (tm) Design Guidelines for J2EE</i>.  Comprehensive
+    advice and examples on application design for the Java2 Enterprise
+    Edition (J2EE) platform, which includes servlets and JSP pages.  The
+    chapters on servlet and JSP design are useful even when your application
+    does not require other J2EE platform components.
+    <br/><br/></li>
+<li><b>TODO</b> -- Add more entries here!</li>
+</ul>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/processes.xml b/webapps/docs/appdev/processes.xml
new file mode 100644 (file)
index 0000000..e11494e
--- /dev/null
@@ -0,0 +1,299 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="processes.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Development Processes</title>
+  </properties>
+
+<body>
+
+
+<section name="Development Processes">
+
+<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>
+
+
+<subsection name="One-Time Setup of Ant and Tomcat for Development">
+
+<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/server/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</code> assigned to
+    him or her.  How such users are defined depends on which Realm you have
+    configured in Tomcat's <code>conf/server.xml</code> file -- see the
+    <a href="../realm-howto.html">Realm Configuration HOW-TO</a> for more
+    information.  You may define any number of users (with any username
+    and password that you like) with the <code>manager</code> role.
+    <br/><br/></li>
+</ul>
+
+</subsection>
+
+
+<subsection name="Create Project Source Code Directory">
+
+<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>
+<source>
+cd {my home directory}
+mkdir myapp    &lt;-- Assumed "project source directory"
+cd myapp
+mkdir docs
+mkdir src
+mkdir web
+mkdir web/WEB-INF
+cvs import -m "Initial Project Creation" {project} \
+       {username} start
+</source>
+
+<p>Now, to verify that it was created correctly in CVS, we will perform a
+checkout of the new project:</p>
+<source>
+cd ..
+mv myapp myapp.bu
+cvs checkout {project}
+</source>
+
+<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>
+<source>
+cd {my home directory}
+cd myapp
+emacs build.xml                &lt;-- if you want a real editor :-)
+cvs add build.xml
+cvs commit
+</source>
+
+<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 5 is installed, and the manager application username and password.
+You might end up with something like this:</p>
+<source>
+# Context path to install this application on
+app.path=/hello
+
+# Tomcat 5 installation directory
+catalina.home=/usr/local/jakarta-tomcat-5.0
+
+# Manager webapp username and password
+manager.username=myusername
+manager.password=mypassword
+</source>
+
+<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>
+<source>
+cd {my home directory}
+cd myapp/web/WEB-INF
+emacs web.xml
+cvs add web.xml
+cvs commit
+</source>
+
+Note that this is only an example web.xml file.  The full definition
+of the deployment descriptor file is in the
+<a href="http://java.sun.com/products/servlet">Servlet Specification.</a>
+
+</subsection>
+
+
+<subsection name="Edit Source Code and Pages">
+
+<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>
+<source>
+cd {my home directory}
+cd myapp
+cvs update -dP
+</source>
+
+<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>
+<source>
+cd {my home directory}
+cd myapp/web           &lt;-- Ultimate destination is document root
+emacs mypage.jsp
+cvs add mypage.jsp
+... build and test the application ...
+cvs commit
+</source>
+
+<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>
+
+</subsection>
+
+
+<subsection name="Build the Web Application">
+
+<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>
+<source>
+cd {my home directory}
+cd myapp               &lt;-- Normally leave a window open here
+ant
+</source>
+
+<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>
+<source>
+cd {my home directory}
+cd myapp
+ant all
+</source>
+
+<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>
+
+</subsection>
+
+
+<subsection name="Test Your Web Application">
+
+<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 5 if needed</em>.  If Tomcat 5 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>
+
+</subsection>
+
+
+<subsection name="Creating a Release">
+
+<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>
+
+</subsection>
+
+
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/project.xml b/webapps/docs/appdev/project.xml
new file mode 100644 (file)
index 0000000..7ce8b24
--- /dev/null
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Application Developer's Guide"
+        href="http://jakarta.apache.org/tomcat/">
+
+    <title>Application Developer's Guide</title>
+
+    <logo href="/images/tomcat.gif">
+      The Tomcat Servlet/JSP Container
+    </logo>
+
+    
+    <body>
+
+    <menu name="Links">
+        <item name="Docs Home"             href="../index.html"/>
+    </menu>
+
+    <menu name="Contents">
+        <item name="Contents"              href="index.html"/>
+        <item name="Introduction"          href="introduction.html"/>
+        <item name="Installation"          href="installation.html"/>
+        <item name="Deployment"            href="deployment.html"/>
+        <item name="Source Code"           href="source.html"/>
+        <item name="Processes"             href="processes.html"/>
+        <item name="Example App"           href="sample/"/>
+    </menu>
+
+    </body>
+</project>
diff --git a/webapps/docs/appdev/sample/docs/README.txt b/webapps/docs/appdev/sample/docs/README.txt
new file mode 100644 (file)
index 0000000..641c989
--- /dev/null
@@ -0,0 +1,2 @@
+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 (file)
index 0000000..582c970
--- /dev/null
@@ -0,0 +1,30 @@
+<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 code you can unpack the war file 
+        with the <b>jar</b> command.
+        <source>
+          jar -xvf sample.war
+        </source>
+      </p>
+</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 (file)
index 0000000..f43f6c0
Binary files /dev/null and b/webapps/docs/appdev/sample/sample.war 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 (file)
index 0000000..5301fa8
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright 1999,2004 The Apache Software Foundation.
+ * 
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ * 
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ * 
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package mypackage;
+
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.util.Enumeration;
+import javax.servlet.ServletException;
+import javax.servlet.http.HttpServlet;
+import javax.servlet.http.HttpServletRequest;
+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 {
+
+
+    /**
+     * 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
+     */
+    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.  It displays the");
+       writer.println("request headers from the request we are currently");
+       writer.println("processing.");
+       writer.println("</td>");
+       writer.println("</tr>");
+       writer.println("</table>");
+
+       writer.println("<table border=\"0\" width=\"100%\">");
+       Enumeration names = request.getHeaderNames();
+       while (names.hasMoreElements()) {
+           String name = (String) names.nextElement();
+           writer.println("<tr>");
+           writer.println("  <th align=\"right\">" + name + ":</th>");
+           writer.println("  <td>" + request.getHeader(name) + "</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 (file)
index 0000000..95e2974
--- /dev/null
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<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 (file)
index 0000000..bf5957c
--- /dev/null
@@ -0,0 +1,44 @@
+<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.  It displays several useful values from the request
+we are currently processing.
+</td>
+</tr>
+</table>
+
+<table border="0" border="100%">
+<tr>
+  <th align="right">Context Path:</th>
+  <td align="left"><%= request.getContextPath() %></td>
+</tr>
+<tr>
+  <th align="right">Path Information:</th>
+  <td align="left"><%= request.getPathInfo() %></td>
+</tr>
+<tr>
+  <th align="right">Query String:</th>
+  <td align="left"><%= request.getQueryString() %></td>
+</tr>
+<tr>
+  <th align="right">Request Method:</th>
+  <td align="left"><%= request.getMethod() %></td>
+</tr>
+<tr>
+  <th align="right">Servlet Path:</th>
+  <td align="left"><%= request.getServletPath() %></td>
+</tr>
+</table>
+</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 (file)
index 0000000..32f7d80
Binary files /dev/null and b/webapps/docs/appdev/sample/web/images/tomcat.gif differ
diff --git a/webapps/docs/appdev/sample/web/index.html b/webapps/docs/appdev/sample/web/index.html
new file mode 100644 (file)
index 0000000..b5b7a70
--- /dev/null
@@ -0,0 +1,28 @@
+<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:
+<ul>
+<li>To a <a href="hello.jsp">JSP page</a>.
+<li>To a <a href="hello">servlet</a>.
+</ul>
+
+</body>
+</html>
diff --git a/webapps/docs/appdev/source.xml b/webapps/docs/appdev/source.xml
new file mode 100644 (file)
index 0000000..84e5730
--- /dev/null
@@ -0,0 +1,306 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="source.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Source Organization</title>
+  </properties>
+
+<body>
+
+
+<section name="Directory Structure">
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</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://java.sun.com/products/servlet">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 5 allows you to deploy an application in an unpacked
+    directory like this, either by copying it to the
+    <code>$CATALINA_HOME/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>
+
+  <subsection name="External Dependencies">
+
+  <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 Tomcat 5's <code>common/lib</code>
+  or <code>shared/lib</code> directories.  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>
+
+  </subsection>
+
+</section>
+
+
+<section name="Source Code Control">
+
+<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>
+<source>
+build
+dist
+build.properties
+</source>
+
+<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>
+
+</section>
+
+
+<section name="BUILD.XML Configuration File">
+
+<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> flie and type:</p>
+<source>
+ant -projecthelp
+</source>
+
+<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 5, the following additional targets are defined:</p>
+<ul>
+<li><strong>install</strong> - Tell the currently running Tomcat 5 to make
+    the application you are developing immediately available for execution
+    and testing.  This action does not require Tomcat 5 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 5 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 5 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>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/appdev/web.xml.txt b/webapps/docs/appdev/web.xml.txt
new file mode 100644 (file)
index 0000000..e75bfba
--- /dev/null
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!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 namess 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.xml b/webapps/docs/apr.xml
new file mode 100644 (file)
index 0000000..ff11887
--- /dev/null
@@ -0,0 +1,331 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="apr.html">
+
+    &project;
+
+  <properties>
+    <title>Apache Portable Runtime and Tomcat</title>
+    <author>Remy Maucherat</author>
+  </properties>
+
+<body>
+
+  <section name="Introduction">
+
+  <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>
+
+  </section>
+
+  <section name="Installation">
+
+    <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>
+
+    <subsection name="Windows">
+    
+    <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.heanet.ie/native/">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>
+    
+    </subsection>
+    
+    <subsection name="Linux">
+    
+    <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):
+      <source>./configure &amp;&amp; make &amp;&amp; make install</source>
+    </p>
+    
+    </subsection>
+       
+  </section>
+
+  <section name="APR Components">
+
+  <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>
+
+  </section>
+
+  <section name="APR Connectors Configuration">
+
+    <subsection name="HTTP">
+    
+    <p>
+      When APR is enabled, the HTTP connector will use sendfile for hadling large static files (all such
+      files will be sent ansychronously using high performance kernel level calls), and will use 
+      a socket poller for keepalive, increasing scalability of the server.
+    </p>
+
+    <p>
+      The following attributes are supported in the HTTP APR connector in addition to the ones supported
+      in the regular HTTP connector:
+    </p>
+
+    <attributes>
+    <attribute name="firstReadTimeout" required="false">
+      <p>The first read of a request will be made using the specified timeout. If no data is available
+      after the specified time, the socket will be placed in the poller. The value of this attribute is
+      in ms. Setting this value to 0 or -1 will
+      increase scalability by always using a poller to handle keepalive, but will have a minor impact 
+      on latency (see the related pollTime attribute). The difference is that with 0, the first read of
+      a request will be made using a short timeout, while with -1, the first read will be made using the
+      regular socket timeout that is configured on the connector. Setting this to -2 will cause
+      the connector to not use the poller for keepalive in most situations, emulating the behavior of
+      the java.io HTTP connector.
+      The default value is -1. Note: on Windows, the actual value of firstReadTimeout will
+      be 500 + the specified value, if the specified value is strictly positive.</p>
+    </attribute>
+
+    <attribute name="pollTime" required="false">
+      <p>Duration of a poll call. Lowering this value will slightly decrease latency of connections 
+      being kept alive in some cases, but will use more CPU as more poll calls are being made. The
+      default value is 2000 (5ms).</p>
+    </attribute>
+
+    <attribute name="pollerSize" required="false">
+      <p>Amount of sockets that the poller responsible for polling kept alive connections can hold at a
+      given time. Extra connections will be closed right away. The default value is 8192, corresponding to
+      8192 keepalive connections.</p>
+    </attribute>
+
+    <attribute name="useSendfile" required="false">
+      <p>Use kernel level sendfile for certain static files. The default value is true.</p>
+    </attribute>
+
+    <attribute name="sendfileSize" required="false">
+      <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 "synchonously" 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>
+    </attribute>
+
+    </attributes>
+    
+    </subsection>
+       
+    <subsection name="HTTPS">
+    
+    <p>
+      When APR is enabled, the HTTPS connector will use a socket poller for keepalive, increasing 
+      scalability of the server. It also uses OpenSSL, which may be more optimized than JSSE depending
+      on the processor being used, and can be complemented with many commercial accelerator components.
+      Unlike the HTTP connector, the HTTPS connector cannot use sendfile to optimize static file
+      processing.
+    </p>
+
+    <p>
+      The HTTPS APR connector has the same basic attributes than the HTTP APR connector, but adds 
+      OpenSSL specific ones. For the full details on using OpenSSL, please refer to OpenSSL documentations
+      and the many books available for it (see the <a href="http://www.openssl.org">Official OpenSSL 
+      website</a>). The SSL specific attributes for the connector are:
+    </p>
+    
+    <attributes>
+
+    <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 off.
+    </p>
+    </attribute>
+    <attribute name="SSLProtocol" required="false">
+    <p>
+      Protocol which may be used for communicating with clients. The default is "all", with
+      other acceptable values being "SSLv2", "SSLv3", "TLSv1", and "SSLv2+SSLv3".
+    </p>
+    </attribute>
+    <attribute name="SSLCipherSuite" required="false">
+    <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>
+    </attribute>
+    <attribute name="SSLCertificateFile" required="true">
+    <p>
+      Name of the file that contains the server certificate. The format is PEM-encoded.
+    </p>
+    </attribute>
+    <attribute name="SSLCertificateKeyFile" required="false">
+    <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>
+    </attribute>
+    <attribute name="SSLPassword" required="false">
+    <p>
+      Pass phrase for the encrypted private key. If "SSLPassword" is not provided, the callback fonction
+      should prompt for the pass phrase.
+    </p>
+    </attribute>
+    <attribute name="SSLVerifyClient" required="false">
+    <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>
+    </attribute>
+    <attribute name="SSLVerifyDepth" required="false">
+    <p>
+      Maximum verification depth for client certificates. The default is "10".
+    </p>
+    </attribute>
+    <attribute name="SSLCACertificateFile" required="false">
+    <p>
+      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatefile">the mod_ssl documentation</a>.
+    </p>
+    </attribute>
+    <attribute name="SSLCACertificatePath" required="false">
+    <p>
+      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcacertificatepath">the mod_ssl documentation</a>.
+    </p>
+    </attribute>
+    <attribute name="SSLCertificateChainFile" required="false">
+    <p>
+      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcertificatechainfile">the mod_ssl documentation</a>.
+    </p>
+    </attribute>
+    <attribute name="SSLCARevocationFile" required="false">
+    <p>
+      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationfile">the mod_ssl documentation</a>.
+    </p>
+    </attribute>
+    <attribute name="SSLCARevocationPath" required="false">
+    <p>
+      See <a href="http://httpd.apache.org/docs/2.2/mod/mod_ssl.html#sslcarevocationpath">the mod_ssl documentation</a>.
+    </p>
+    </attribute>
+
+    </attributes>
+    
+    <p>
+    An example SSL Connector declaration can be:
+    <source>
+    &lt;Connector port="443" maxHttpHeaderSize="8192"
+               maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
+               enableLookups="false" disableUploadTimeout="true"
+               acceptCount="100" scheme="https" secure="true"
+               SSLEngine="on" 
+               SSLCertificateFile="${catalina.base}/conf/localhost.crt"
+               SSLCertificateKeyFile="${catalina.base}/conf/localhost.key" /&gt;</source>
+    </p>
+    
+    </subsection>
+       
+    <subsection name="AJP">
+    
+    <p>
+      When APR is enabled, the AJP connector will use a socket poller for keepalive, increasing 
+      scalability of the server. As AJP is designed around a pool of persistent (or almost
+      persistent) connections, this will reduce significantly the amount of processing threads 
+      needed by Tomcat. Unlike the HTTP connector, the AJP connector cannot use sendfile to optimize
+      static file processing.
+    </p>
+
+    <p>
+      The following attributes are supported in the AJP APR connector in addition to the ones supported
+      in the regular AJP connector:
+    </p>
+
+    <attributes>
+    <attribute name="firstReadTimeout" required="false">
+      <p>The first read of a request will be made using the specified timeout. If no data is available
+      after the specified time, the socket will be placed in the poller. The value of this attribute is
+      in ms. Setting this value to 0 or -1 will
+      increase scalability by always using a poller to handle keepalive, but will have a minor impact 
+      on latency (see the related pollTime attribute). The difference is that with 0, the first read of
+      a request will be made using a short timeout, while with -1, the first read will be made using the
+      regular socket timeout that is configured on the connector. Setting this to -2 will cause
+      the connector to not use the poller for keepalive in most situations, emulating the behavior of
+      the java.io HTTP connector.
+      The default value is -1. Note: on Windows, the actual value of firstReadTimeout will
+      be 500 + the specified value, if the specified value is strictly positive.</p>
+    </attribute>
+
+    <attribute name="pollTime" required="false">
+      <p>Duration of a poll call. Lowering this value will slightly decrease latency of connections 
+      being kept alive in some cases, but will use more CPU as more poll calls are being made. The
+      default value is 2000 (5ms).</p>
+    </attribute>
+
+    <attribute name="pollerSize" required="false">
+      <p>Amount of sockets that the poller responsible for polling kept alive connections can hold at a
+      given time. Extra connections will be closed right away. The default value is 8192, corresponding to
+      8192 keepalive connections.</p>
+    </attribute>
+
+    </attributes>
+    
+    </subsection>
+       
+  </section>
+
+</body>
+</document>
diff --git a/webapps/docs/architecture/index.xml b/webapps/docs/architecture/index.xml
new file mode 100644 (file)
index 0000000..a320ac3
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Table of Contents</title>
+  </properties>
+
+<body>
+
+
+<section name="Preface">
+
+<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>
+
+</section>
+
+
+<section name="Table of Contents">
+
+<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>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/architecture/overview.xml b/webapps/docs/architecture/overview.xml
new file mode 100644 (file)
index 0000000..99b14bc
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="overview.html">
+
+  &project;
+
+  <properties>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Architecture Overview</title>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+<p>
+This page provides an overview of the Tomcat server architecture.
+</p>
+</section>
+
+<section name="Terms">
+
+<subsection name="Server">
+<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="../catalina/docs/api/org/apache/catalina/Server.html">Server interface.</a>,
+and this is rarely customized by users.
+</p>
+</subsection>
+
+<subsection name="Service">
+<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="../catalina/docs/api/org/apache/catalina/Service.html">Service interface</a>.
+</p>
+</subsection>
+
+<subsection name="Engine">
+<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 received and processes all requests from these connectors, handing
+the response back to the appropriate connector for transmission to the client.
+The <a href="../catalina/docs/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>
+</subsection>
+
+<subsection name="Host">
+<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="../catalina/docs/api/org/apache/catalina/Host.html">Hosts</a>
+because the 
+<a href="../catalina/docs/api/org/apache/catalina/core/StandardHost.html">StandardHost
+implementation</a> provides significant additional functionality.
+</p>
+</subsection>
+
+<subsection name="Connector">
+<p>
+A Connector handles communications with the client.  There are multiple
+connectors available with Tomcat, all of which implement the 
+<a href="../catalina/docs/api/org/apache/catalina/Connector.html">Connector
+interface.</a>  These include the
+<a href="../config/coyote.html">Coyote connector</a> which is used for
+most HTTP traffic, especially when running Tomcat as a standalone server, 
+and the <a href="../config/jk2.html">JK2 connector</a> which implements
+the AJP procotol used when connecting Tomcat to an Apache HTTPD server.
+Creating a customized connector is a significant effort.
+</p>
+</subsection>
+
+<subsection name="Context">
+<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="../catalina/docs/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="../catalina/docs/api/org/apache/catalina/core/StandardContext.html">
+StandardContext</a> provides significant additional functionality.
+</p>
+</subsection>
+</section>
+
+<section name="Comments">
+<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 effots to make more aspects of Tomcat managable via
+JMX.  In addition, the Manager and Admin webapps have been greatly
+enhanced and improved.  Managability is a primary area of concern
+for us as the product matures and the specification becomes more
+stable.
+</p>
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/architecture/project.xml b/webapps/docs/architecture/project.xml
new file mode 100644 (file)
index 0000000..b7d25b3
--- /dev/null
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Tomcat Architecture"
+        href="http://jakarta.apache.org/tomcat/">
+
+    <title>Tomcat Architecture</title>
+
+    <logo href="/images/tomcat.gif">
+      The Tomcat Servlet/JSP Container
+    </logo>
+
+    
+    <body>
+
+    <menu name="Links">
+        <item name="Docs Home"             href="../index.html" />
+    </menu>
+
+    <menu name="Contents">
+        <item name="Contents"              href="index.html" />
+        <item name="Overview"              href="overview.html" />
+        <item name="Server Startup"        href="startup.html" />
+        <item name="Request Process"       href="requestProcess.html" />
+    </menu>
+
+    </body>
+</project>
diff --git a/webapps/docs/architecture/requestProcess.xml b/webapps/docs/architecture/requestProcess.xml
new file mode 100644 (file)
index 0000000..ba359bd
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="requestProcess.html">
+
+  &project;
+
+  <properties>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Request Process Flow</title>
+  </properties>
+
+<body>
+
+
+<section name="Request Process Flow">
+
+<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>
+
+<subsection name="description">
+<p>
+TODO
+</p>
+</subsection>
+
+<subsection name="diagram">
+<p>
+A UML sequence diagram of the request process is available
+<a href="requestProcess/requestProcess.pdf">here.</a>
+</p>
+</subsection>
+
+<subsection name="comments">
+<p>
+The Servlet Specification provides many opportunities for
+listening in (using Listeners) or modiying (using Filters)
+the request handling process even before the request arrives
+at the servlet that will handle it.
+</p>
+
+</subsection>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/architecture/requestProcess/requestProcess.pdf b/webapps/docs/architecture/requestProcess/requestProcess.pdf
new file mode 100644 (file)
index 0000000..6a171de
Binary files /dev/null and b/webapps/docs/architecture/requestProcess/requestProcess.pdf differ
diff --git a/webapps/docs/architecture/requestProcess/roseModel.mdl b/webapps/docs/architecture/requestProcess/roseModel.mdl
new file mode 100644 (file)
index 0000000..64ef567
--- /dev/null
@@ -0,0 +1,12921 @@
+\r
+(object Petal\r
+    version            45\r
+    _written           "Rose 7.6.0109.2314"\r
+    charSet            0)\r
+\r
+(object Design "Logical View"\r
+    is_unit            TRUE\r
+    is_loaded          TRUE\r
+    quid               "3DFDF6CE0337"\r
+    defaults           (object defaults\r
+       rightMargin     0.250000\r
+       leftMargin      0.250000\r
+       topMargin       0.250000\r
+       bottomMargin    0.500000\r
+       pageOverlap     0.250000\r
+       clipIconLabels  TRUE\r
+       autoResize      TRUE\r
+       snapToGrid      TRUE\r
+       gridX           16\r
+       gridY           16\r
+       defaultFont     (object Font\r
+           size        10\r
+           face        "Arial"\r
+           bold        FALSE\r
+           italics     FALSE\r
+           underline   FALSE\r
+           strike      FALSE\r
+           color       0\r
+           default_color       TRUE)\r
+       showMessageNum  1\r
+       showClassOfObject       TRUE\r
+       notation        "Unified")\r
+    root_usecase_package       (object Class_Category "Use Case View"\r
+       quid            "3DFDF6CE0369"\r
+       exportControl   "Public"\r
+       global          TRUE\r
+       logical_models  (list unit_reference_list)\r
+       logical_presentations   (list unit_reference_list\r
+           (object UseCaseDiagram "Main"\r
+               quid            "3DFDF6D201FE"\r
+               title           "Main"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list))))\r
+    root_category      (object Class_Category "Logical View"\r
+       quid            "3DFDF6CE0338"\r
+       exportControl   "Public"\r
+       global          TRUE\r
+       subsystem       "Component View"\r
+       quidu           "3DFDF6CE036A"\r
+       logical_models  (list unit_reference_list\r
+           (object Class_Category "org.apache.catalina"\r
+               quid            "3E42DE8D0082"\r
+               visible_categories      (list visibility_relationship_list\r
+                   (object Visibility_Relationship\r
+                       quid            "3E42DEF601EB"\r
+                       supplier        "Logical View::org.apache.tomcat.util"\r
+                       quidu           "3E42DEDF01F2")\r
+                   (object Visibility_Relationship\r
+                       quid            "3E42DF700060"\r
+                       supplier        "Logical View::org.apache.coyote"\r
+                       quidu           "3E42DE9F0132")\r
+                   (object Visibility_Relationship\r
+                       quid            "3E43D165039C"\r
+                       supplier        "Logical View::org.apache.naming"\r
+                       quidu           "3E43D1580339"))\r
+               exportControl   "Public"\r
+               logical_models  (list unit_reference_list\r
+                   (object Class_Category "ant"\r
+                       quid            "3E42DFBB037F"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43CFF7020F"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "authenticator"\r
+                       quid            "3E42DFC702B4"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D03C0395"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D03F01C2"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D043024A"\r
+                               supplier        "Logical View::org.apache.catalina::valves"\r
+                               quidu           "3E42E02D035B"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "connector"\r
+                       quid            "3E42DFCF036A"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D07E017D"\r
+                               supplier        "Logical View::org.apache.catalina::session"\r
+                               quidu           "3E42E00C026D"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "core"\r
+                       quid            "3E42DFD603BA"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D19E01A9"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D1A10185"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D1CE007C"\r
+                               supplier        "Logical View::org.apache.catalina::connector"\r
+                               quidu           "3E42DFCF036A")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D1D800D0"\r
+                               supplier        "Logical View::org.apache.catalina::security"\r
+                               quidu           "3E42E00100D7")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D25C031F"\r
+                               supplier        "Logical View::org.apache.catalina::mbean"\r
+                               quidu           "3E42DFF10188")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D260028E"\r
+                               supplier        "Logical View::org.apache.catalina::startup"\r
+                               quidu           "3E42E01E00EC")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D26A015C"\r
+                               supplier        "Logical View::org.apache.catalina::session"\r
+                               quidu           "3E42E00C026D")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D2830271"\r
+                               supplier        "Logical View::org.apache.catalina::valves"\r
+                               quidu           "3E42E02D035B")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D2C80248"\r
+                               supplier        "Logical View::org.apache.catalina::net"\r
+                               quidu           "3E42DFF70227")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D2D6002B"\r
+                               supplier        "Logical View::org.apache.catalina::loader"\r
+                               quidu           "3E43D2D002D6")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D3D300F7"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "deploy"\r
+                       quid            "3E42DFDC0340"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D32001B8"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "launcher"\r
+                       quid            "3E42DFE2033F"\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "logger"\r
+                       quid            "3E42DFEC0285"\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "mbean"\r
+                       quid            "3E42DFF10188"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D49101A5"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D4C6027D"\r
+                               supplier        "Logical View::org.apache.catalina::core"\r
+                               quidu           "3E42DFD603BA")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D4FB008F"\r
+                               supplier        "Logical View::org.apache.catalina::session"\r
+                               quidu           "3E42E00C026D")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D50000BE"\r
+                               supplier        "Logical View::org.apache.catalina::valves"\r
+                               quidu           "3E42E02D035B")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D5080278"\r
+                               supplier        "Logical View::org.apache.catalina::realm"\r
+                               quidu           "3E42DFFA00AE")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D55A0258"\r
+                               supplier        "Logical View::org.apache.catalina::logger"\r
+                               quidu           "3E42DFEC0285")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D56000D0"\r
+                               supplier        "Logical View::org.apache.catalina::authenticator"\r
+                               quidu           "3E42DFC702B4"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "net"\r
+                       quid            "3E42DFF70227"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D6390371"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "realm"\r
+                       quid            "3E42DFFA00AE"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D69F0133"\r
+                               supplier        "Logical View::org.apache.catalina::core"\r
+                               quidu           "3E42DFD603BA")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D6A10353"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D70E00E2"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D72302D7"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "security"\r
+                       quid            "3E42E00100D7"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D74D007F"\r
+                               supplier        "Logical View::org.apache.catalina::startup"\r
+                               quidu           "3E42E01E00EC")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D76B0371"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "servlets"\r
+                       quid            "3E42E00502DB"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D82702E5"\r
+                               supplier        "Logical View::org.apache.tomcat.util"\r
+                               quidu           "3E42DEDF01F2")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D82A02CC"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D82D0244"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "session"\r
+                       quid            "3E42E00C026D"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D8770344"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "ssi"\r
+                       quid            "3E42E01002C3"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D8F902B5"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "startup"\r
+                       quid            "3E42E01E00EC"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D9150251"\r
+                               supplier        "Logical View::org.apache.catalina::logger"\r
+                               quidu           "3E42DFEC0285")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D919018F"\r
+                               supplier        "Logical View::org.apache.catalina::security"\r
+                               quidu           "3E42E00100D7")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D946000D"\r
+                               supplier        "Logical View::org.apache.catalina::core"\r
+                               quidu           "3E42DFD603BA")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D95E012A"\r
+                               supplier        "Logical View::org.apache.catalina::loader"\r
+                               quidu           "3E43D2D002D6")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D9960315"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D99902BF"\r
+                               supplier        "Logical View::org.apache.catalina::valves"\r
+                               quidu           "3E42E02D035B")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D99C0147"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D9DA0114"\r
+                               supplier        "Logical View::org.apache.catalina::net"\r
+                               quidu           "3E42DFF70227")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D9F402F2"\r
+                               supplier        "Logical View::org.apache.catalina::realm"\r
+                               quidu           "3E42DFFA00AE"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "user"\r
+                       quid            "3E42E0220174"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DB240227"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DB31009F"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "util"\r
+                       quid            "3E42E0260184"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DB85017C"\r
+                               supplier        "Logical View::org.apache.catalina::core"\r
+                               quidu           "3E42DFD603BA")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DB88016C"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "valves"\r
+                       quid            "3E42E02D035B"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DC2B0257"\r
+                               supplier        "Logical View::org.apache.catalina::util"\r
+                               quidu           "3E42E0260184")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DD3E0271"\r
+                               supplier        "Logical View::org.apache.catalina::deploy"\r
+                               quidu           "3E42DFDC0340")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DD4102CF"\r
+                               supplier        "Logical View::org.apache.catalina::connector"\r
+                               quidu           "3E42DFCF036A")\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43DDDE00B8"\r
+                               supplier        "Logical View::org.apache.catalina::core"\r
+                               quidu           "3E42DFD603BA"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list))\r
+                   (object Class_Category "loader"\r
+                       quid            "3E43D2D002D6"\r
+                       visible_categories      (list visibility_relationship_list\r
+                           (object Visibility_Relationship\r
+                               quid            "3E43D3CF00F2"\r
+                               supplier        "Logical View::org.apache.naming"\r
+                               quidu           "3E43D1580339"))\r
+                       exportControl   "Public"\r
+                       logical_models  (list unit_reference_list)\r
+                       logical_presentations   (list unit_reference_list)))\r
+               logical_presentations   (list unit_reference_list\r
+                   (object ClassDiagram "Main"\r
+                       quid            "3E42DFB6010B"\r
+                       title           "Main"\r
+                       zoom            100\r
+                       max_height      28350\r
+                       max_width       21600\r
+                       origin_x        0\r
+                       origin_y        0\r
+                       items           (list diagram_item_list\r
+                           (object CategoryView "Logical View::org.apache.catalina::ant" @1\r
+                               location        (2208, 1504)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @1\r
+                                   location    (2064, 1420)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "ant")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFBB037F"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::authenticator" @2\r
+                               location        (192, 2000)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @2\r
+                                   location    (48, 1916)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "authenticator")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFC702B4"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::connector" @3\r
+                               location        (464, 1328)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @3\r
+                                   location    (320, 1244)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "connector")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFCF036A"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::core" @4\r
+                               location        (2224, 800)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @4\r
+                                   location    (2080, 716)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "core")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFD603BA"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::deploy" @5\r
+                               location        (240, 160)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @5\r
+                                   location    (96, 76)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "deploy")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFDC0340"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::launcher" @6\r
+                               location        (1776, 2480)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @6\r
+                                   location    (1632, 2396)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "launcher")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFE2033F"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::logger" @7\r
+                               location        (752, 128)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @7\r
+                                   location    (608, 44)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "logger")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFEC0285"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::mbean" @8\r
+                               location        (2208, 1216)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @8\r
+                                   location    (2064, 1132)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "mbean")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFF10188"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::net" @9\r
+                               location        (1056, 2496)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @9\r
+                                   location    (912, 2412)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "net")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFF70227"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::realm" @10\r
+                               location        (1248, 112)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @10\r
+                                   location    (1104, 28)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "realm")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DFFA00AE"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::security" @11\r
+                               location        (304, 2496)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @11\r
+                                   location    (160, 2412)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "security")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E00100D7"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::servlets" @12\r
+                               location        (2096, 1888)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @12\r
+                                   location    (1952, 1804)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "servlets")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E00502DB"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::session" @13\r
+                               location        (432, 1696)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @13\r
+                                   location    (288, 1612)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "session")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E00C026D"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::ssi" @14\r
+                               location        (672, 2480)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @14\r
+                                   location    (528, 2393)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "ssi")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E01002C3"\r
+                               width           301\r
+                               height          187)\r
+                           (object CategoryView "Logical View::org.apache.catalina::startup" @15\r
+                               location        (1088, 832)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @15\r
+                                   location    (944, 748)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "startup")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E01E00EC"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::user" @16\r
+                               location        (1424, 2496)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @16\r
+                                   location    (1280, 2412)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "user")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E0220174"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::util" @17\r
+                               location        (1312, 1872)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @17\r
+                                   location    (1168, 1788)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "util")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E0260184"\r
+                               width           300\r
+                               height          180)\r
+                           (object CategoryView "Logical View::org.apache.catalina::valves" @18\r
+                               location        (304, 704)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @18\r
+                                   location    (160, 620)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "valves")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42E02D035B"\r
+                               width           300\r
+                               height          180)\r
+                           (object ImportView "" @19\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43CFF7020F"\r
+                               client          @1\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @20\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D07E017D"\r
+                               client          @3\r
+                               supplier        @13\r
+                               line_style      0)\r
+                           (object CategoryView "Logical View::org.apache.catalina::loader" @21\r
+                               location        (2240, 416)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @21\r
+                                   location    (2096, 332)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   288\r
+                                   justify     0\r
+                                   label       "loader")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E43D2D002D6"\r
+                               width           300\r
+                               height          180)\r
+                           (object ImportView "" @22\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D32001B8"\r
+                               client          @5\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object CategoryView "Logical View::org.apache.naming" @23\r
+                               location        (1872, 96)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @23\r
+                                   location    (1699, 12)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   346\r
+                                   justify     0\r
+                                   label       "org.apache.naming")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E43D1580339"\r
+                               width           358\r
+                               height          180)\r
+                           (object ImportView "" @24\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D3CF00F2"\r
+                               client          @21\r
+                               supplier        @23\r
+                               line_style      0)\r
+                           (object ImportView "" @25\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D6390371"\r
+                               client          @9\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @26\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D69F0133"\r
+                               client          @10\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @27\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D6A10353"\r
+                               client          @10\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @28\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D70E00E2"\r
+                               client          @10\r
+                               supplier        @23\r
+                               line_style      0)\r
+                           (object ImportView "" @29\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D72302D7"\r
+                               client          @10\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @30\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D69F0133"\r
+                               client          @10\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @31\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D74D007F"\r
+                               client          @11\r
+                               supplier        @15\r
+                               line_style      0)\r
+                           (object ImportView "" @32\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D76B0371"\r
+                               client          @11\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object CategoryView "Logical View::org.apache.tomcat.util" @33\r
+                               location        (2096, 2224)\r
+                               font            (object Font\r
+                                   size        10\r
+                                   face        "Arial"\r
+                                   bold        FALSE\r
+                                   italics     FALSE\r
+                                   underline   FALSE\r
+                                   strike      FALSE\r
+                                   color       0\r
+                                   default_color       TRUE)\r
+                               label           (object ItemLabel\r
+                                   Parent_View         @33\r
+                                   location    (1923, 2140)\r
+                                   fill_color  13434879\r
+                                   nlines      2\r
+                                   max_width   346\r
+                                   justify     0\r
+                                   label       "org.apache.tomcat.util")\r
+                               icon_style      "Icon"\r
+                               line_color      3342489\r
+                               fill_color      13434879\r
+                               quidu           "3E42DEDF01F2"\r
+                               width           358\r
+                               height          180)\r
+                           (object ImportView "" @34\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D8770344"\r
+                               client          @13\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @35\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D8F902B5"\r
+                               client          @14\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @36\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DB240227"\r
+                               client          @16\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @37\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DB31009F"\r
+                               client          @16\r
+                               supplier        @23\r
+                               line_style      0)\r
+                           (object ImportView "" @38\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DB85017C"\r
+                               client          @17\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @39\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DB88016C"\r
+                               client          @17\r
+                               supplier        @23\r
+                               line_style      0)\r
+                           (object ImportView "" @40\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D82702E5"\r
+                               client          @12\r
+                               supplier        @33\r
+                               line_style      0)\r
+                           (object ImportView "" @41\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D82A02CC"\r
+                               client          @12\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @42\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D82D0244"\r
+                               client          @12\r
+                               supplier        @23\r
+                               vertices        (list Points\r
+                                   (2060, 1743)\r
+                                   (1746, 447)\r
+                                   (1838, 186))\r
+                               line_style      0)\r
+                           (object ImportView "" @43\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D919018F"\r
+                               client          @15\r
+                               supplier        @11\r
+                               line_style      0)\r
+                           (object ImportView "" @44\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D946000D"\r
+                               client          @15\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @45\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D95E012A"\r
+                               client          @15\r
+                               supplier        @21\r
+                               line_style      0)\r
+                           (object ImportView "" @46\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D95E012A"\r
+                               client          @15\r
+                               supplier        @21\r
+                               line_style      0)\r
+                           (object ImportView "" @47\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D9960315"\r
+                               client          @15\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @48\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D99902BF"\r
+                               client          @15\r
+                               supplier        @18\r
+                               line_style      0)\r
+                           (object ImportView "" @49\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D99C0147"\r
+                               client          @15\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @50\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D946000D"\r
+                               client          @15\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @51\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D9150251"\r
+                               client          @15\r
+                               supplier        @7\r
+                               line_style      0)\r
+                           (object ImportView "" @52\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D9DA0114"\r
+                               client          @15\r
+                               supplier        @9\r
+                               line_style      0)\r
+                           (object ImportView "" @53\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D9F402F2"\r
+                               client          @15\r
+                               supplier        @10\r
+                               line_style      0)\r
+                           (object ImportView "" @54\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D9960315"\r
+                               client          @15\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @55\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D946000D"\r
+                               client          @15\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @56\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D99C0147"\r
+                               client          @15\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @57\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D49101A5"\r
+                               client          @8\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @58\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D4C6027D"\r
+                               client          @8\r
+                               supplier        @4\r
+                               line_style      0)\r
+                           (object ImportView "" @59\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D4FB008F"\r
+                               client          @8\r
+                               supplier        @13\r
+                               line_style      0)\r
+                           (object ImportView "" @60\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D50000BE"\r
+                               client          @8\r
+                               supplier        @18\r
+                               vertices        (list Points\r
+                                   (2057, 1216)\r
+                                   (1278, 1216)\r
+                                   (454, 783))\r
+                               line_style      0)\r
+                           (object ImportView "" @61\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D5080278"\r
+                               client          @8\r
+                               supplier        @10\r
+                               line_style      0)\r
+                           (object ImportView "" @62\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D55A0258"\r
+                               client          @8\r
+                               supplier        @7\r
+                               line_style      0)\r
+                           (object ImportView "" @63\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D56000D0"\r
+                               client          @8\r
+                               supplier        @2\r
+                               line_style      0)\r
+                           (object ImportView "" @64\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D19E01A9"\r
+                               client          @4\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @65\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D1A10185"\r
+                               client          @4\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @66\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D1CE007C"\r
+                               client          @4\r
+                               supplier        @3\r
+                               line_style      0)\r
+                           (object ImportView "" @67\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D1D800D0"\r
+                               client          @4\r
+                               supplier        @11\r
+                               vertices        (list Points\r
+                                   (2081, 890)\r
+                                   (959, 1616)\r
+                                   (409, 2351))\r
+                               line_style      0)\r
+                           (object ImportView "" @68\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D25C031F"\r
+                               client          @4\r
+                               supplier        @8\r
+                               line_style      0)\r
+                           (object ImportView "" @69\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D260028E"\r
+                               client          @4\r
+                               supplier        @15\r
+                               line_style      0)\r
+                           (object ImportView "" @70\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D26A015C"\r
+                               client          @4\r
+                               supplier        @13\r
+                               line_style      0)\r
+                           (object ImportView "" @71\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D2830271"\r
+                               client          @4\r
+                               supplier        @18\r
+                               line_style      0)\r
+                           (object ImportView "" @72\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D2C80248"\r
+                               client          @4\r
+                               supplier        @9\r
+                               line_style      0)\r
+                           (object ImportView "" @73\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D2D6002B"\r
+                               client          @4\r
+                               supplier        @21\r
+                               line_style      0)\r
+                           (object ImportView "" @74\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D3D300F7"\r
+                               client          @4\r
+                               supplier        @23\r
+                               line_style      0)\r
+                           (object ImportView "" @75\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D03C0395"\r
+                               client          @2\r
+                               supplier        @5\r
+                               vertices        (list Points\r
+                                   (171, 1855)\r
+                                   (16, 766)\r
+                                   (205, 250))\r
+                               line_style      0)\r
+                           (object ImportView "" @76\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D03F01C2"\r
+                               client          @2\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @77\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43D043024A"\r
+                               client          @2\r
+                               supplier        @18\r
+                               line_style      0)\r
+                           (object ImportView "" @78\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DC2B0257"\r
+                               client          @18\r
+                               supplier        @17\r
+                               line_style      0)\r
+                           (object ImportView "" @79\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DD3E0271"\r
+                               client          @18\r
+                               supplier        @5\r
+                               line_style      0)\r
+                           (object ImportView "" @80\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DD4102CF"\r
+                               client          @18\r
+                               supplier        @3\r
+                               line_style      0)\r
+                           (object ImportView "" @81\r
+                               stereotype      TRUE\r
+                               line_color      3342489\r
+                               quidu           "3E43DDDE00B8"\r
+                               client          @18\r
+                               supplier        @4\r
+                               vertices        (list Points\r
+                                   (454, 654)\r
+                                   (1293, 381)\r
+                                   (2073, 731))\r
+                               line_style      0)))))\r
+           (object Class_Category "org.apache.coyote"\r
+               quid            "3E42DE9F0132"\r
+               visible_categories      (list visibility_relationship_list\r
+                   (object Visibility_Relationship\r
+                       quid            "3E42DEFC00B3"\r
+                       supplier        "Logical View::org.apache.tomcat.util"\r
+                       quidu           "3E42DEDF01F2"))\r
+               exportControl   "Public"\r
+               logical_models  (list unit_reference_list)\r
+               logical_presentations   (list unit_reference_list))\r
+           (object Class_Category "org.apache.tomcat.util"\r
+               quid            "3E42DEDF01F2"\r
+               exportControl   "Public"\r
+               logical_models  (list unit_reference_list)\r
+               logical_presentations   (list unit_reference_list))\r
+           (object Class_Category "org.apache.jasper"\r
+               quid            "3E42DEFF0270"\r
+               exportControl   "Public"\r
+               logical_models  (list unit_reference_list)\r
+               logical_presentations   (list unit_reference_list))\r
+           (object Class_Category "org.apache.naming"\r
+               quid            "3E43D1580339"\r
+               exportControl   "Public"\r
+               logical_models  (list unit_reference_list)\r
+               logical_presentations   (list unit_reference_list))\r
+           (object Mechanism @82\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "Bootstrap"\r
+                       quid            "3DFDF8FD0345"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDF9210008"\r
+                               supplier        "Bootstrap"\r
+                               quidu           "3DFDF8FD0345"\r
+                               messages        (list Messages\r
+                                   (object Message "initClassLoaders()"\r
+                                       quid            "3DFDF9210009"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFDF91A010C"\r
+                               supplier        "Catalina"\r
+                               quidu           "3DFDF90A0330"\r
+                               messages        (list Messages\r
+                                   (object Message "newInstance()"\r
+                                       quid            "3DFDF91A010D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setParentClassLoader()"\r
+                                       quid            "3DFDF97900C2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "load()"\r
+                                       quid            "3DFDFA3402F2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "4"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Digester"\r
+                       quid            "3DFDFAF201A1"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDFB8400A6"\r
+                               supplier        "ServerLifecycleListener"\r
+                               quidu           "3DFDFB4B0217"\r
+                               messages        (list Messages\r
+                                   (object Message "newInstance()"\r
+                                       quid            "3DFDFB8400A7"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "9.1"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFDFB920147"\r
+                               supplier        "GlobalResourcesLifecycleListener"\r
+                               quidu           "3DFDFB7A02AB"\r
+                               messages        (list Messages\r
+                                   (object Message "newInstance()"\r
+                                       quid            "3DFDFB920148"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "9.2"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ServerLifecycleListener"\r
+                       quid            "3DFDFB4B0217"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "GlobalResourcesLifecycleListener"\r
+                       quid            "3DFDFB7A02AB"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "SecurityConfig"\r
+                       quid            "3DFDFBD802BA"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Catalina"\r
+                       quid            "3DFDF90A0330"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDFA8001D9"\r
+                               supplier        "Catalina"\r
+                               quidu           "3DFDF90A0330"\r
+                               messages        (list Messages\r
+                                   (object Message "initDirs()"\r
+                                       quid            "3DFDFA8001DA"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "initNaming()"\r
+                                       quid            "3DFDFA8B0347"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "initialize()"\r
+                                       quid            "3DFDFAAD01AC"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "7"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFDFAF800C3"\r
+                               supplier        "Digester"\r
+                               quidu           "3DFDFAF201A1"\r
+                               messages        (list Messages\r
+                                   (object Message "createDigester()"\r
+                                       quid            "3DFDFAF800C4"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "parse()"\r
+                                       quid            "3DFDFB0100B2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "9"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFDFBEA00C1"\r
+                               supplier        "SecurityConfig"\r
+                               quidu           "3DFDFBD802BA"\r
+                               messages        (list Messages\r
+                                   (object Message "newInstance()"\r
+                                       quid            "3DFDFBEA00C2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "10"\r
+                                       ordinal         11\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setPackageDefinition()"\r
+                                       quid            "3DFDFBF401F2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "11"\r
+                                       ordinal         12\r
+                                       Operation       "setPackageDefinition"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setPackageAccess()"\r
+                                       quid            "3DFDFC1203C2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "12"\r
+                                       ordinal         13\r
+                                       Operation       "setPackageAccess"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @83\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "Catalina"\r
+                       quid            "3DFDFC8F015F"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDFD1F0075"\r
+                               supplier        "StandardServer"\r
+                               quidu           "3DFDFCCB006B"\r
+                               messages        (list Messages\r
+                                   (object Message "initialize()"\r
+                                       quid            "3DFDFD1F0076"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardServer"\r
+                       quid            "3DFDFCCB006B"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDFD3D01C3"\r
+                               supplier        "StandardService"\r
+                               quidu           "3DFDFD370020"\r
+                               messages        (list Messages\r
+                                   (object Message "initialize()"\r
+                                       quid            "3DFDFD3D01C4"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardService"\r
+                       quid            "3DFDFD370020"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFDFE990304"\r
+                               supplier        "CoyoteConnector"\r
+                               quidu           "3DFDFE810313"\r
+                               messages        (list Messages\r
+                                   (object Message "initialize()"\r
+                                       quid            "3DFDFE990305"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "CoyoteConnector"\r
+                       quid            "3DFDFE810313"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE013D0216"\r
+                               supplier        "CoyoteAdapter"\r
+                               quidu           "3DFDFFA00226"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE013D0217"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1.1"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE0183032F"\r
+                               supplier        "Http11Protocol"\r
+                               quidu           "3DFE016601A6"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE01830330"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1.2"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "init()"\r
+                                       quid            "3DFE0188032C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1.3"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE01BC038B"\r
+                               supplier        "JkCoyoteAdapter"\r
+                               quidu           "3DFE01AD01A8"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE01BC038C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1.4"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "init()"\r
+                                       quid            "3DFE01C30164"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1.5"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "CoyoteAdapter"\r
+                       quid            "3DFDFFA00226"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Http11Protocol"\r
+                       quid            "3DFE016601A6"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "JkCoyoteAdapter"\r
+                       quid            "3DFE01AD01A8"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @84\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "Bootstrap"\r
+                       quid            "3DFE027700F5"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE02830373"\r
+                               supplier        "Catalina"\r
+                               quidu           "3DFE027D0067"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE02830374"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Catalina"\r
+                       quid            "3DFE027D0067"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE02BA0187"\r
+                               supplier        "StandardServer"\r
+                               quidu           "3DFE02B30015"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE02BA0188"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardServer"\r
+                       quid            "3DFE02B30015"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE02D3006B"\r
+                               supplier        "StandardServer"\r
+                               quidu           "3DFE02B30015"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quid            "3DFE02D3006C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "fireLifecycleEvent(START_EVENT)"\r
+                                       quid            "3DFE02DF02DF"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.2"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE030C02B2"\r
+                               supplier        "StandardService"\r
+                               quidu           "3DFE030400E3"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE030C02B3"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.3"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardService"\r
+                       quid            "3DFE030400E3"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE031D0021"\r
+                               supplier        "StandardService"\r
+                               quidu           "3DFE030400E3"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quid            "3DFE031D0022"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.3.1"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "fireLifecycleEvent(START_EVENT)"\r
+                                       quid            "3DFE0330019B"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.3.2"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE03700189"\r
+                               supplier        "StandardEngine"\r
+                               quidu           "3DFE034700C2"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE0370018A"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.3.3"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardEngine"\r
+                       quid            "3DFE034700C2"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE03750050"\r
+                               supplier        "StandardEngine"\r
+                               quidu           "3DFE034700C2"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quid            "3DFE03750051"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "addDefaultMapper()"\r
+                                       quid            "3DFE0389001C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "logger.start()"\r
+                                       quid            "3DFE03980281"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "4"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "realm.start()"\r
+                                       quid            "3DFE03A80107"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5"\r
+                                       ordinal         11\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "findMappers()"\r
+                                       quid            "3DFE03BD000D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6"\r
+                                       ordinal         12\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "findChildren()"\r
+                                       quid            "3DFE03E000A4"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "7"\r
+                                       ordinal         13\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE03FB0279"\r
+                               supplier        "StandardHost"\r
+                               quidu           "3DFE03F2035D"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE03FB027A"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8"\r
+                                       ordinal         14\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHost"\r
+                       quid            "3DFE03F2035D"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE043B02AD"\r
+                               supplier        "StandardHost"\r
+                               quidu           "3DFE03F2035D"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quid            "3DFE043B02AE"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.1"\r
+                                       ordinal         15\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "addDefaultMapper()"\r
+                                       quid            "3DFE045C021F"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.2"\r
+                                       ordinal         16\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "logger.start()"\r
+                                       quid            "3DFE049B000C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.3"\r
+                                       ordinal         17\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "findMapper()"\r
+                                       quid            "3DFE04A303BB"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.4"\r
+                                       ordinal         18\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "findChildren()"\r
+                                       quid            "3DFE04A90342"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.5"\r
+                                       ordinal         19\r
+                                       Operation       "findChildren"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE048E00B8"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE047D006D"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE048E00B9"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.6"\r
+                                       ordinal         20\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardPipeline"\r
+                       quid            "3DFE047D006D"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE05780137"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE047D006D"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quid            "3DFE05780138"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.6.1"\r
+                                       ordinal         21\r
+                                       Operation       "fireLifecycleEvent(AFTER_START_EVENT)"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "fireLifecycleEvent(START_EVENT)"\r
+                                       quid            "3DFE05A80398"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.6.2"\r
+                                       ordinal         22\r
+                                       Operation       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "fireLifecycleEvent(AFTER_EVENT)"\r
+                                       quid            "3DFE05BA0196"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "8.6.3"\r
+                                       ordinal         23\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @85\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "StandardHost"\r
+                       quid            "3DFE0538017B"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE066C0340"\r
+                               supplier        "StandardHost"\r
+                               quidu           "3DFE0538017B"\r
+                               messages        (list Messages\r
+                                   (object Message "fireLifecycleEvent(START_EVENT)"\r
+                                       quid            "3DFE066C0341"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE06D20293"\r
+                               supplier        "HostConfig"\r
+                               quidu           "3DFE06A60131"\r
+                               messages        (list Messages\r
+                                   (object Message "interested[i].lifecycleEvent()"\r
+                                       quid            "3DFE06D20294"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "install()"\r
+                                       quid            "3DFE078B03BB"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "2.6"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "install()"\r
+                                       quid            "3DFE132D0309"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "5"\r
+                                       ordinal         13\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE07B100BD"\r
+                               supplier        "StandardHostDeployer"\r
+                               quidu           "3DFE079A0055"\r
+                               messages        (list Messages\r
+                                   (object Message "install()"\r
+                                       quid            "3DFE07B100BE"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "install() // same as above"\r
+                                       quid            "3DFE133A036C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6"\r
+                                       ordinal         17\r
+                                       Operation       "install()"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "HostConfig"\r
+                       quid            "3DFE06A60131"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE06E9028C"\r
+                               supplier        "HostConfig"\r
+                               quidu           "3DFE06A60131"\r
+                               messages        (list Messages\r
+                                   (object Message "setDeployXML()"\r
+                                       quid            "3DFE06E9028D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.1"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setLiveDeploy()"\r
+                                       quid            "3DFE06F300FF"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.2"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setUnpacksWar()"\r
+                                       quid            "3DFE06FB00D9"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.3"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setXMLValidation()"\r
+                                       quid            "3DFE070C0015"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.4"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "deployDescriptors()"\r
+                                       quid            "3DFE073B0031"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2.5"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "deployApps()"\r
+                                       quid            "3DFE131F0327"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "4"\r
+                                       ordinal         12\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHostDeployer"\r
+                       quid            "3DFE079A0055"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE07D200EC"\r
+                               supplier        "Digester"\r
+                               quidu           "3DFE07C9034C"\r
+                               messages        (list Messages\r
+                                   (object Message "create()"\r
+                                       quid            "3DFE07D200ED"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "parse()"\r
+                                       quid            "3DFE07D603D7"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.6"\r
+                                       ordinal         16\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "add(ContextRuleSet)"\r
+                                       quid            "3DFE08FA003D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.3"\r
+                                       ordinal         11\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE087D01E2"\r
+                               supplier        "StandardHostDeployer"\r
+                               quidu           "3DFE079A0055")\r
+                           (object Link\r
+                               quid            "3DFE08DA029A"\r
+                               supplier        "ContextRuleSet"\r
+                               quidu           "3DFE0834016F"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE08DA029B"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.2"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "add(NamingRuleSet())"\r
+                                       quid            "3DFE0907015F"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.5"\r
+                                       ordinal         15\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE08E00090"\r
+                               supplier        "NamingRuleSet"\r
+                               quidu           "3DFE08D00173"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE08E00091"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.4"\r
+                                       ordinal         14\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Digester"\r
+                       quid            "3DFE07C9034C"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ContextRuleSet"\r
+                       quid            "3DFE0834016F"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "NamingRuleSet"\r
+                       quid            "3DFE08D00173"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @86\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "Digester"\r
+                       quid            "3DFE095A0371"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE0E7801DA"\r
+                               supplier        "Digester"\r
+                               quidu           "3DFE095A0371"\r
+                               messages        (list Messages\r
+                                   (object Message "parse"\r
+                                       quid            "3DFE0E7801DB"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "startElement()"\r
+                                       quid            "3DFE0F2F03D2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE0F400213"\r
+                               supplier        "Rule"\r
+                               quidu           "3DFE0E7400D0"\r
+                               messages        (list Messages\r
+                                   (object Message "begin()"\r
+                                       quid            "3DFE0F400214"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Rule"\r
+                       quid            "3DFE0E7400D0"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE0FD30265"\r
+                               supplier        "StandardContext"\r
+                               quidu           "3DFE0FC502A1"\r
+                               messages        (list Messages\r
+                                   (object Message "newInstance()"\r
+                                       quid            "3DFE0FD30266"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE102002E8"\r
+                               supplier        "SetPropertiesRule"\r
+                               quidu           "3DFE100303A4"\r
+                               messages        (list Messages\r
+                                   (object Message "begin()"\r
+                                       quid            "3DFE102002E9"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.2"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE127F0024"\r
+                               supplier        "Rule"\r
+                               quidu           "3DFE0E7400D0")\r
+                           (object Link\r
+                               quid            "3DFE128501C7"\r
+                               supplier        "SetNextRule"\r
+                               quidu           "3DFE12690267"\r
+                               messages        (list Messages\r
+                                   (object Message "end()"\r
+                                       quid            "3DFE128501C8"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.3"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardContext"\r
+                       quid            "3DFE0FC502A1"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE114A0192"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE112F003F"\r
+                               messages        (list Messages\r
+                                   (object Message "setBasic(StandardContextValve)"\r
+                                       quid            "3DFE114A0193"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.2"\r
+                                       ordinal         5\r
+                                       Operation       "setBasic"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE115E001E"\r
+                               supplier        "StandardContextValve"\r
+                               quidu           "3DFE110D0375"\r
+                               messages        (list Messages\r
+                                   (object Message "new()"\r
+                                       quid            "3DFE115E001F"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "SetPropertiesRule"\r
+                       quid            "3DFE100303A4"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE11D50390"\r
+                               supplier        "StandardContext"\r
+                               quidu           "3DFE0FC502A1"\r
+                               messages        (list Messages\r
+                                   (object Message "//Using BeanUtil, set the object properties (from ex: admin.xml)"\r
+                                       quid            "3DFE11D50391"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.2.1"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardContextValve"\r
+                       quid            "3DFE110D0375"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardPipeline"\r
+                       quid            "3DFE112F003F"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "SetNextRule"\r
+                       quid            "3DFE12690267"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @87\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "StandardContext"\r
+                       quid            "3DFE196D00D9"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE200603BD"\r
+                               supplier        "WebappLoader"\r
+                               quidu           "3DFE1FFA0347"\r
+                               messages        (list Messages\r
+                                   (object Message "new"\r
+                                       quid            "3DFE200603BE"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.1"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE200C0299"\r
+                               supplier        "StandardContext"\r
+                               quidu           "3DFE196D00D9"\r
+                               messages        (list Messages\r
+                                   (object Message "setLoader"\r
+                                       quid            "3DFE200C029A"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.2"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "setManager"\r
+                                       quid            "3DFE2032001C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.4"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "fireLifecycleEvent(START_EVENT)"\r
+                                       quid            "3DFE205B01A2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.5"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE202C024F"\r
+                               supplier        "StandardManager"\r
+                               quidu           "3DFE201F0105"\r
+                               messages        (list Messages\r
+                                   (object Message "new"\r
+                                       quid            "3DFE202C0250"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.3"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE20B600E5"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.7"\r
+                                       ordinal         12\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE20960002"\r
+                               supplier        "ContextConfig"\r
+                               quidu           "3DFE2087028C"\r
+                               messages        (list Messages\r
+                                   (object Message " // Notify interested LifecycleListeners"\r
+                                       quid            "3DFE20960003"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHostDeployer"\r
+                       quid            "3DFE1D8A02DC"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE1FAF0014"\r
+                               supplier        "StandardHost"\r
+                               quidu           "3DFE1DF20141"\r
+                               messages        (list Messages\r
+                                   (object Message "addChild"\r
+                                       quid            "3DFE1FB60277"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHost"\r
+                       quid            "3DFE1DF20141"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE1FC40227"\r
+                               supplier        "StandardContext"\r
+                               quidu           "3DFE196D00D9"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE1FC40228"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "WebappLoader"\r
+                       quid            "3DFE1FFA0347"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardManager"\r
+                       quid            "3DFE201F0105"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ContextConfig"\r
+                       quid            "3DFE2087028C"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE20CF018B"\r
+                               supplier        "ContextConfig"\r
+                               quidu           "3DFE2087028C"\r
+                               messages        (list Messages\r
+                                   (object Message "start()"\r
+                                       quid            "3DFE20CF018C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.1"\r
+                                       ordinal         11\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "defaultConfig()"\r
+                                       quid            "3DFE20E303E2"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.2"\r
+                                       ordinal         13\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "applicationConfig()"\r
+                                       quid            "3DFE211D01A1"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3"\r
+                                       ordinal         14\r
+                                       Operation       "applicationConfig"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE21B60287"\r
+                               supplier        "Digester"\r
+                               quidu           "3DFE13960364"\r
+                               messages        (list Messages\r
+                                   (object Message "create()"\r
+                                       quid            "3DFE21B60288"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.1"\r
+                                       ordinal         15\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"\r
+                                       quid            "3DFE228B03BA"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "3.1.1.6.3.1.2"\r
+                                       ordinal         17\r
+                                       Operation       "createWarpper() // Invoked by a Rule (not Directly by the Digester)"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE22560061"\r
+                               supplier        "StandardWrapper"\r
+                               quidu           "3DFE220C0122"\r
+                               messages        (list Messages\r
+                                   (object Message "new"\r
+                                       quid            "3DFE229A0004"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.1.2.1"\r
+                                       ordinal         18\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "addInstanceListener()"\r
+                                       quid            "3DFE22A700C1"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.2"\r
+                                       ordinal         19\r
+                                       Operation       "addInstanceListener"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "addLifecycleListener()"\r
+                                       quid            "3DFE22C701CC"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.3"\r
+                                       ordinal         20\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "addContainerListener()"\r
+                                       quid            "3DFE22E80364"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.4"\r
+                                       ordinal         21\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     TRUE\r
+                       multi           FALSE)\r
+                   (object Object "Digester"\r
+                       quid            "3DFE13960364"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE19AE0064"\r
+                               supplier        "Digester"\r
+                               quidu           "3DFE13960364"\r
+                               messages        (list Messages\r
+                                   (object Message "parse"\r
+                                       quid            "3DFE19AE0065"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "startElement()"\r
+                                       quid            "3DFE19B102E9"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "// Process web.xml * tld.xml"\r
+                                       quid            "3DFE21BE021B"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1.1.6.3.1.1"\r
+                                       ordinal         16\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE1DFB0021"\r
+                               supplier        "StandardHostDeployer"\r
+                               quidu           "3DFE1D8A02DC"\r
+                               messages        (list Messages\r
+                                   (object Message "addChild"\r
+                                       quid            "3DFE1DFB0022"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE22190225"\r
+                               supplier        "StandardWrapper"\r
+                               quidu           "3DFE220C0122"))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardWrapper"\r
+                       quid            "3DFE220C0122"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @88\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "ThreadPool"\r
+                       quid            "3DFE402B02C5"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE40E701AD"\r
+                               supplier        "TcpWorkerThread"\r
+                               quidu           "3DFE403200F8"\r
+                               messages        (list Messages\r
+                                   (object Message "runIt()"\r
+                                       quid            "3DFE40E701AE"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "TcpWorkerThread"\r
+                       quid            "3DFE403200F8"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE40FC010D"\r
+                               supplier        "Http11Protocol"\r
+                               quidu           "3DFE40750177"\r
+                               messages        (list Messages\r
+                                   (object Message "processConnection"\r
+                                       quid            "3DFE40FC010E"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "Http11Protocol"\r
+                       quid            "3DFE40750177"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE4111029E"\r
+                               supplier        "Http11Protocol"\r
+                               quidu           "3DFE40750177"\r
+                               messages        (list Messages\r
+                                   (object Message "process()"\r
+                                       quid            "3DFE4111029F"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "parseHeaders()"\r
+                                       quid            "3DFE415C0151"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "prepareRequest()"\r
+                                       quid            "3DFE41A60161"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE41D60106"\r
+                               supplier        "CoyoteAdapter"\r
+                               quidu           "3DFE410600DF"\r
+                               messages        (list Messages\r
+                                   (object Message "service()"\r
+                                       quid            "3DFE41D60107"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "4"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "CoyoteAdapter"\r
+                       quid            "3DFE410600DF"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE422C01F0"\r
+                               supplier        "CoyoteAdapter"\r
+                               quidu           "3DFE410600DF"\r
+                               messages        (list Messages\r
+                                   (object Message "postParseRequest()"\r
+                                       quid            "3DFE422C01F1"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE42800237"\r
+                               supplier        "StandardEngine"\r
+                               quidu           "3DFE424B0349"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE42800238"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardEngine"\r
+                       quid            "3DFE424B0349"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE429A002C"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE42900045"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE429A002D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6.1"\r
+                                       ordinal         8\r
+                                       Operation       "invoke"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardPipeline"\r
+                       quid            "3DFE42900045"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE42CE022F"\r
+                               supplier        "StandardValveContext"\r
+                               quidu           "3DFE42C002B1"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE42CE0230"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "6.1.1"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardValveContext"\r
+                       quid            "3DFE42C002B1"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @89\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "StandardContextValve"\r
+                       quid            "3DFE4307001E"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE434C019A"\r
+                               supplier        "StandardEngineValve"\r
+                               quidu           "3DFE432801F3"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE434C019B"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE43C203A3"\r
+                               supplier        "ErrorReportValve"\r
+                               quidu           "3DFE438C028D"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE43C203A4"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3"\r
+                                       ordinal         4\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "invokeNext()"\r
+                                       quid            "3DFE46330293"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "3.2"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE46E70025"\r
+                               supplier        "ErrorDispatcherValve"\r
+                               quidu           "3DFE451F01EC"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE46E70026"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "4"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "invokeNext"\r
+                                       quid            "3DFE475D03A0"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "4.1"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE476503C9"\r
+                               supplier        "StandardHostValve"\r
+                               quidu           "3DFE47310130"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE476503CA"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardEngineValve"\r
+                       quid            "3DFE432801F3"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE436C009C"\r
+                               supplier        "StandardHost"\r
+                               quidu           "3DFE436503BD"\r
+                               messages        (list Messages\r
+                                   (object Message "map()"\r
+                                       quid            "3DFE436C009D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE43830063"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE437F0143"\r
+                               supplier        "StandardEngineValve"\r
+                               quidu           "3DFE432801F3"))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHost"\r
+                       quid            "3DFE436503BD"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE43B903BE"\r
+                               supplier        "StandardContextValve"\r
+                               quidu           "3DFE4307001E"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE43B903BF"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "2"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ErrorReportValve"\r
+                       quid            "3DFE438C028D"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE442501B0"\r
+                               supplier        "ErrorReportValve"\r
+                               quidu           "3DFE438C028D"\r
+                               messages        (list Messages\r
+                                   (object Message "report()"\r
+                                       quid            "3DFE442501B1"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "3.1"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE452A00F7"\r
+                               supplier        "ErrorDispatcherValve"\r
+                               quidu           "3DFE451F01EC"))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ErrorDispatcherValve"\r
+                       quid            "3DFE451F01EC"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE47500148"\r
+                               supplier        "StandardHostValve"\r
+                               quidu           "3DFE47310130")\r
+                           (object Link\r
+                               quid            "3DFE47580335"\r
+                               supplier        "ErrorDispatcherValve"\r
+                               quidu           "3DFE451F01EC"))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardHostValve"\r
+                       quid            "3DFE47310130"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE47CD0166"\r
+                               supplier        "StandardHostValve"\r
+                               quidu           "3DFE47310130"\r
+                               messages        (list Messages\r
+                                   (object Message "map() //Context"\r
+                                       quid            "3DFE47CD0167"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5.1"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE47D500B3"\r
+                               supplier        "StandardContext"\r
+                               quidu           "3DFE47C100F1"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE47D500B4"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "5.2"\r
+                                       ordinal         11\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardContext"\r
+                       quid            "3DFE47C100F1"\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)))\r
+           (object Mechanism @90\r
+               logical_models  (list unit_reference_list\r
+                   (object Object "StandardContext"\r
+                       quid            "3DFE48B001D1"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE48BE0267"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE48B80088"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE48BE0268"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1"\r
+                                       ordinal         0\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardPipeline"\r
+                       quid            "3DFE48B80088"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE48EA0039"\r
+                               supplier        "StandardValveContext"\r
+                               quidu           "3DFE48D000DC"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE48EA003A"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1"\r
+                                       ordinal         1\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE4976015D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2"\r
+                                       ordinal         6\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardValveContext"\r
+                       quid            "3DFE48D000DC"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE491102D5"\r
+                               supplier        "StandardContextValve"\r
+                               quidu           "3DFE490303A7"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE491102D6"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1"\r
+                                       ordinal         2\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE4993023B"\r
+                               supplier        "StandardWrapperValve"\r
+                               quidu           "3DFE49890056"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE4993023C"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1"\r
+                                       ordinal         7\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardContextValve"\r
+                       quid            "3DFE490303A7"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE492F033C"\r
+                               supplier        "StandardContextValve"\r
+                               quidu           "3DFE490303A7"\r
+                               messages        (list Messages\r
+                                   (object Message "map //return Wrapper"\r
+                                       quid            "3DFE492F033D"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1.1"\r
+                                       ordinal         3\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE494A0150"\r
+                               supplier        "StandardWrapper"\r
+                               quidu           "3DFE49370351"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE494A0151"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1.2"\r
+                                       ordinal         4\r
+                                       Operation       "invoke"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardWrapper"\r
+                       quid            "3DFE49370351"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE495F0287"\r
+                               supplier        "StandardPipeline"\r
+                               quidu           "3DFE48B80088"\r
+                               messages        (list Messages\r
+                                   (object Message "invoke()"\r
+                                       quid            "3DFE495F0288"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.1.1.2.1"\r
+                                       ordinal         5\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "StandardWrapperValve"\r
+                       quid            "3DFE49890056"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE49DB018A"\r
+                               supplier        "StandardWrapperValve"\r
+                               quidu           "3DFE49890056")\r
+                           (object Link\r
+                               quid            "3DFE49EC004E"\r
+                               supplier        "StandardWrapper"\r
+                               quidu           "3DFE49370351"\r
+                               messages        (list Messages\r
+                                   (object Message "allocate()"\r
+                                       quid            "3DFE49EC004F"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1.1"\r
+                                       ordinal         8\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "return servlet"\r
+                                       quid            "3DFE4A200067"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Return"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "1.2.1.1.1"\r
+                                       ordinal         9\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE4A29027D"\r
+                               supplier        "ApplicationFilterChain"\r
+                               quidu           "3DFE4A1500B2"\r
+                               messages        (list Messages\r
+                                   (object Message "createFilterChain()"\r
+                                       quid            "3DFE4A29027E"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1.1.1.1"\r
+                                       ordinal         10\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "doFilter()"\r
+                                       quid            "3DFE4A490283"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1.2"\r
+                                       ordinal         11\r
+                                       Operation       "doFilter"\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)\r
+                                   (object Message "return"\r
+                                       quid            "3DFE4CB4025B"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Return"\r
+                                       dir             "ToClientFromSupplier"\r
+                                       sequence        "1.2.1.2.3"\r
+                                       ordinal         14\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "ApplicationFilterChain"\r
+                       quid            "3DFE4A1500B2"\r
+                       collaborators   (list link_list\r
+                           (object Link\r
+                               quid            "3DFE4C2701C2"\r
+                               supplier        "ApplicationFilterChain"\r
+                               quidu           "3DFE4A1500B2"\r
+                               messages        (list Messages\r
+                                   (object Message "internalDoFilter()"\r
+                                       quid            "3DFE4C2701C3"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1.2.1"\r
+                                       ordinal         12\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE)))\r
+                           (object Link\r
+                               quid            "3DFE4CA502BE"\r
+                               supplier        "$UNNAMED$0"\r
+                               quidu           "3DFE4BAE0056"\r
+                               messages        (list Messages\r
+                                   (object Message "service()"\r
+                                       quid            "3DFE4CA502BF"\r
+                                       frequency       "Aperiodic"\r
+                                       synchronization         "Simple"\r
+                                       dir             "FromClientToSupplier"\r
+                                       sequence        "1.2.1.2.2"\r
+                                       ordinal         13\r
+                                       quidu           "000000000000"\r
+                                       creation        FALSE))))\r
+                       persistence     "Transient"\r
+                       creationObj     FALSE\r
+                       multi           FALSE)\r
+                   (object Object "$UNNAMED$0"\r
+                       quid            "3DFE4BAE0056"\r
+                       stereotype      "Servlet"\r
+                       persistence     "Transient"\r
+                       creationObj     TRUE\r
+                       multi           FALSE))))\r
+       logical_presentations   (list unit_reference_list\r
+           (object ClassDiagram "Main"\r
+               quid            "3DFDF6D2021B"\r
+               title           "Main"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list))\r
+           (object ClassDiagram "high level packaging"\r
+               quid            "3E42DE75004B"\r
+               title           "high level packaging"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list\r
+                   (object CategoryView "Logical View::org.apache.catalina" @91\r
+                       location        (1024, 752)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @91\r
+                           location    (780, 668)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   488\r
+                           justify     0\r
+                           label       "org.apache.catalina")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3E42DE8D0082"\r
+                       width           500\r
+                       height          181)\r
+                   (object CategoryView "Logical View::org.apache.coyote" @92\r
+                       location        (512, 1184)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @92\r
+                           location    (237, 1090)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   550\r
+                           justify     0\r
+                           label       "org.apache.coyote")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3E42DE9F0132"\r
+                       width           563\r
+                       height          200)\r
+                   (object CategoryView "Logical View::org.apache.tomcat.util" @93\r
+                       location        (1920, 1104)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @93\r
+                           location    (1670, 1020)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   500\r
+                           justify     0\r
+                           label       "org.apache.tomcat.util")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3E42DEDF01F2"\r
+                       width           512\r
+                       height          181)\r
+                   (object ImportView "" @94\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       quidu           "3E42DEF601EB"\r
+                       client          @91\r
+                       supplier        @93\r
+                       line_style      0)\r
+                   (object ImportView "" @95\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       quidu           "3E42DEFC00B3"\r
+                       client          @92\r
+                       supplier        @93\r
+                       line_style      0)\r
+                   (object CategoryView "Logical View::org.apache.jasper" @96\r
+                       location        (1728, 624)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @96\r
+                           location    (1437, 540)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   582\r
+                           justify     0\r
+                           label       "org.apache.jasper")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3E42DEFF0270"\r
+                       width           594\r
+                       height          181)\r
+                   (object ImportView "" @97\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       quidu           "3E42DF700060"\r
+                       client          @91\r
+                       supplier        @92\r
+                       line_style      0)\r
+                   (object NoteView @98\r
+                       location        (1200, 208)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @98\r
+                           location    (847, 143)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   671\r
+                           label       "High Level package dependencies")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           731\r
+                       height          143)\r
+                   (object CategoryView "Logical View::org.apache.naming" @99\r
+                       location        (352, 304)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @99\r
+                           location    (83, 220)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   538\r
+                           justify     0\r
+                           label       "org.apache.naming")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3E43D1580339"\r
+                       width           550\r
+                       height          181)\r
+                   (object ImportView "" @100\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       quidu           "3E43D165039C"\r
+                       client          @91\r
+                       supplier        @99\r
+                       line_style      0)))\r
+           (object InteractionDiagram "1. catalina_load"\r
+               mechanism_ref   @82\r
+               quid            "3DFDF8EE0267"\r
+               title           "1. catalina_load"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        519\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "Bootstrap" @101\r
+                       location        (224, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @101\r
+                           location    (224, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Bootstrap")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDF8FD0345"\r
+                       width           300\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @102\r
+                           location    (224, 368)\r
+                           line_color  3342489\r
+                           InterObjView        @101\r
+                           height      1738\r
+                           y_coord     1678\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @103\r
+                           location    (224, 368)\r
+                           line_color  3342489\r
+                           InterObjView        @101\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "Digester" @104\r
+                       location        (896, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @104\r
+                           location    (896, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Digester")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFAF201A1"\r
+                       width           300\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @105\r
+                           location    (896, 1232)\r
+                           line_color  3342489\r
+                           InterObjView        @104\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @106\r
+                           location    (896, 1312)\r
+                           line_color  3342489\r
+                           InterObjView        @104\r
+                           height      264\r
+                           y_coord     204\r
+                           Nested      FALSE))\r
+                   (object InterObjView "ServerLifecycleListener" @107\r
+                       location        (1232, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @107\r
+                           location    (1232, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "ServerLifecycleListener")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFB4B0217"\r
+                       width           300\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @108\r
+                           location    (1232, 1328)\r
+                           line_color  3342489\r
+                           InterObjView        @107\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "GlobalResourcesLifecycleListener" @109\r
+                       location        (1568, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @109\r
+                           location    (1568, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   322\r
+                           justify     0\r
+                           label       "GlobalResourcesLifecycleListener")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFB7A02AB"\r
+                       width           340\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @110\r
+                           location    (1568, 1456)\r
+                           line_color  3342489\r
+                           InterObjView        @109\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "SecurityConfig" @111\r
+                       location        (1920, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @111\r
+                           location    (1920, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "SecurityConfig")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFBD802BA"\r
+                       width           300\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @112\r
+                           location    (1920, 1600)\r
+                           line_color  3342489\r
+                           InterObjView        @111\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @113\r
+                           location    (1920, 1680)\r
+                           line_color  3342489\r
+                           InterObjView        @111\r
+                           height      146\r
+                           y_coord     86\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @114\r
+                           location    (1920, 1760)\r
+                           line_color  3342489\r
+                           InterObjView        @111\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object SelfMessView "" @115\r
+                       location        (16, 368)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @116\r
+                           Parent_View         @115\r
+                           location    (315, 324)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDF9210009"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   340\r
+                           justify     0\r
+                           label       "initClassLoaders()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @101\r
+                       supplier        @101\r
+                       Focus_Src       @102\r
+                       Focus_Entry     @103\r
+                       origin          (240, 368)\r
+                       terminus        (390, 368)\r
+                       ordinal         0)\r
+                   (object NoteView @117\r
+                       location        (1152, 1072)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @117\r
+                           location    (1014, 1012)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   240\r
+                           label       "parse server.xml")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           300\r
+                       height          132)\r
+                   (object NoteView @118\r
+                       location        (1376, 80)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @118\r
+                           location    (1238, 20)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   240\r
+                           label       "MBeans")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           300\r
+                       height          132)\r
+                   (object AttachView "" @119\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @118\r
+                       supplier        @107\r
+                       line_style      0)\r
+                   (object AttachView "" @120\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @109\r
+                       supplier        @118\r
+                       line_style      0)\r
+                   (object NoteView @121\r
+                       location        (2160, 2176)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @121\r
+                           location    (1947, 2113)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   390\r
+                           label       "#1Catalina.load()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           450\r
+                       height          138)\r
+                   (object InterObjView "Catalina" @122\r
+                       location        (560, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @122\r
+                           location    (560, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Catalina")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDF90A0330"\r
+                       width           300\r
+                       height          1972\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @123\r
+                           location    (560, 464)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @124\r
+                           location    (560, 608)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @125\r
+                           location    (560, 720)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      1326\r
+                           y_coord     1266\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @126\r
+                           location    (560, 896)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      194\r
+                           y_coord     134\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @127\r
+                           location    (560, 896)\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @128\r
+                           location    (560, 1024)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @129\r
+                           location    (560, 1024)\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @130\r
+                           location    (560, 1152)\r
+                           line_color  3342489\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @131\r
+                           location    (560, 1152)\r
+                           InterObjView        @122\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object SelfMessView "" @132\r
+                       location        (16, 896)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @133\r
+                           Parent_View         @132\r
+                           location    (651, 852)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFA8001DA"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   160\r
+                           justify     0\r
+                           label       "initDirs()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @122\r
+                       Focus_Src       @127\r
+                       Focus_Entry     @126\r
+                       origin          (576, 896)\r
+                       terminus        (726, 896)\r
+                       ordinal         4)\r
+                   (object SelfMessView "" @134\r
+                       location        (16, 1024)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @135\r
+                           Parent_View         @134\r
+                           location    (701, 981)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFA8B0347"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   228\r
+                           justify     0\r
+                           label       "initNaming()"\r
+                           pctDist     0.840000\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @122\r
+                       Focus_Src       @129\r
+                       Focus_Entry     @128\r
+                       origin          (576, 1024)\r
+                       terminus        (726, 1024)\r
+                       ordinal         5)\r
+                   (object SelfMessView "" @136\r
+                       location        (16, 1152)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @137\r
+                           Parent_View         @136\r
+                           location    (686, 1109)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFAAD01AC"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   180\r
+                           justify     0\r
+                           label       "initialize()"\r
+                           pctDist     0.733333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @122\r
+                       Focus_Src       @131\r
+                       Focus_Entry     @130\r
+                       origin          (576, 1152)\r
+                       terminus        (726, 1152)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @138\r
+                       location        (16, 464)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @139\r
+                           Parent_View         @138\r
+                           location    (389, 437)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDF91A010D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   265\r
+                           justify     0\r
+                           label       "newInstance()"\r
+                           pctDist     0.495082\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @101\r
+                       supplier        @122\r
+                       Focus_Src       @102\r
+                       Focus_Entry     @123\r
+                       origin          (239, 464)\r
+                       terminus        (544, 464)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @140\r
+                       location        (16, 608)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @141\r
+                           Parent_View         @140\r
+                           location    (456, 565)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDF97900C2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   445\r
+                           justify     0\r
+                           label       "setParentClassLoader()"\r
+                           pctDist     0.711475\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @101\r
+                       supplier        @122\r
+                       Focus_Src       @102\r
+                       Focus_Entry     @124\r
+                       origin          (239, 608)\r
+                       terminus        (544, 608)\r
+                       ordinal         2)\r
+                   (object InterMessView "" @142\r
+                       location        (16, 720)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @143\r
+                           Parent_View         @142\r
+                           location    (391, 676)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFA3402F2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   108\r
+                           justify     0\r
+                           label       "load()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @101\r
+                       supplier        @122\r
+                       Focus_Src       @102\r
+                       Focus_Entry     @125\r
+                       origin          (239, 720)\r
+                       terminus        (544, 720)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @144\r
+                       location        (16, 1232)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @145\r
+                           Parent_View         @144\r
+                           location    (727, 1188)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFAF800C4"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   302\r
+                           justify     0\r
+                           label       "createDigester()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @104\r
+                       Focus_Src       @125\r
+                       Focus_Entry     @105\r
+                       origin          (575, 1232)\r
+                       terminus        (880, 1232)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @146\r
+                       location        (16, 1312)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @147\r
+                           Parent_View         @146\r
+                           location    (727, 1268)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFB0100B2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   136\r
+                           justify     0\r
+                           label       "parse()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @104\r
+                       Focus_Src       @125\r
+                       Focus_Entry     @106\r
+                       origin          (575, 1312)\r
+                       terminus        (880, 1312)\r
+                       ordinal         8)\r
+                   (object AttachView "" @148\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @147\r
+                       supplier        @117\r
+                       line_style      0)\r
+                   (object InterMessView "" @149\r
+                       location        (16, 1328)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @150\r
+                           Parent_View         @149\r
+                           location    (1063, 1284)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFB8400A7"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   265\r
+                           justify     0\r
+                           label       "newInstance()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @104\r
+                       supplier        @107\r
+                       Focus_Src       @106\r
+                       Focus_Entry     @108\r
+                       origin          (911, 1328)\r
+                       terminus        (1216, 1328)\r
+                       ordinal         9)\r
+                   (object InterMessView "" @151\r
+                       location        (16, 1456)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @152\r
+                           Parent_View         @151\r
+                           location    (1231, 1412)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFB920148"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   265\r
+                           justify     0\r
+                           label       "newInstance()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @104\r
+                       supplier        @109\r
+                       Focus_Src       @106\r
+                       Focus_Entry     @110\r
+                       origin          (911, 1456)\r
+                       terminus        (1552, 1456)\r
+                       ordinal         10)\r
+                   (object InterMessView "" @153\r
+                       location        (16, 1600)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @154\r
+                           Parent_View         @153\r
+                           location    (1239, 1556)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFBEA00C2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   265\r
+                           justify     0\r
+                           label       "newInstance()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @111\r
+                       Focus_Src       @125\r
+                       Focus_Entry     @112\r
+                       origin          (575, 1600)\r
+                       terminus        (1904, 1600)\r
+                       ordinal         11)\r
+                   (object InterMessView "" @155\r
+                       location        (16, 1680)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @156\r
+                           Parent_View         @155\r
+                           location    (1239, 1636)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFBF401F2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   425\r
+                           justify     0\r
+                           label       "setPackageDefinition()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @111\r
+                       Focus_Src       @125\r
+                       Focus_Entry     @113\r
+                       origin          (575, 1680)\r
+                       terminus        (1904, 1680)\r
+                       ordinal         12)\r
+                   (object InterMessView "" @157\r
+                       location        (16, 1760)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @158\r
+                           Parent_View         @157\r
+                           location    (1239, 1716)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFC1203C2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   386\r
+                           justify     0\r
+                           label       "setPackageAccess()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @122\r
+                       supplier        @111\r
+                       Focus_Src       @125\r
+                       Focus_Entry     @114\r
+                       origin          (575, 1760)\r
+                       terminus        (1904, 1760)\r
+                       ordinal         13)))\r
+           (object InteractionDiagram "2. catalina_initliaze"\r
+               mechanism_ref   @83\r
+               quid            "3DFDFC44002A"\r
+               title           "2. catalina_initliaze"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        87\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "Catalina" @159\r
+                       location        (176, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @159\r
+                           location    (176, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Catalina")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFC8F015F"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @160\r
+                           location    (176, 400)\r
+                           line_color  3342489\r
+                           InterObjView        @159\r
+                           height      914\r
+                           y_coord     854\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardServer" @161\r
+                       location        (496, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @161\r
+                           location    (496, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardServer")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFCCB006B"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @162\r
+                           location    (496, 400)\r
+                           line_color  3342489\r
+                           InterObjView        @161\r
+                           height      854\r
+                           y_coord     794\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @163\r
+                           location    (496, 480)\r
+                           line_color  3342489\r
+                           InterObjView        @161\r
+                           height      768\r
+                           y_coord     708\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardService" @164\r
+                       location        (832, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @164\r
+                           location    (832, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardService")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFD370020"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @165\r
+                           location    (832, 480)\r
+                           line_color  3342489\r
+                           InterObjView        @164\r
+                           height      708\r
+                           y_coord     648\r
+                           Nested      FALSE))\r
+                   (object InterObjView "CoyoteConnector" @166\r
+                       location        (1168, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @166\r
+                           location    (1168, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "CoyoteConnector")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFE810313"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @167\r
+                           location    (1168, 528)\r
+                           line_color  3342489\r
+                           InterObjView        @166\r
+                           height      600\r
+                           y_coord     540\r
+                           Nested      FALSE))\r
+                   (object InterObjView "CoyoteAdapter" @168\r
+                       location        (1504, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @168\r
+                           location    (1504, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "CoyoteAdapter")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFDFFA00226"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @169\r
+                           location    (1504, 576)\r
+                           line_color  3342489\r
+                           InterObjView        @168\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "Http11Protocol" @170\r
+                       location        (1808, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @170\r
+                           location    (1808, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Http11Protocol")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE016601A6"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @171\r
+                           location    (1808, 704)\r
+                           line_color  3342489\r
+                           InterObjView        @170\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @172\r
+                           location    (1808, 832)\r
+                           line_color  3342489\r
+                           InterObjView        @170\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "JkCoyoteAdapter" @173\r
+                       location        (2144, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @173\r
+                           location    (2144, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "JkCoyoteAdapter")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE01AD01A8"\r
+                       width           300\r
+                       height          1180\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @174\r
+                           location    (2144, 928)\r
+                           line_color  3342489\r
+                           InterObjView        @173\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @175\r
+                           location    (2144, 1008)\r
+                           line_color  3342489\r
+                           InterObjView        @173\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterMessView "" @176\r
+                       location        (16, 400)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @177\r
+                           Parent_View         @176\r
+                           location    (335, 356)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFD1F0076"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   180\r
+                           justify     0\r
+                           label       "initialize()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @159\r
+                       supplier        @161\r
+                       Focus_Src       @160\r
+                       Focus_Entry     @162\r
+                       origin          (191, 400)\r
+                       terminus        (480, 400)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @178\r
+                       location        (16, 480)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @179\r
+                           Parent_View         @178\r
+                           location    (663, 436)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFD3D01C4"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   180\r
+                           justify     0\r
+                           label       "initialize()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @161\r
+                       supplier        @164\r
+                       Focus_Src       @163\r
+                       Focus_Entry     @165\r
+                       origin          (511, 480)\r
+                       terminus        (816, 480)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @180\r
+                       location        (16, 528)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @181\r
+                           Parent_View         @180\r
+                           location    (999, 484)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFDFE990305"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   180\r
+                           justify     0\r
+                           label       "initialize()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @164\r
+                       supplier        @166\r
+                       Focus_Src       @165\r
+                       Focus_Entry     @167\r
+                       origin          (847, 528)\r
+                       terminus        (1152, 528)\r
+                       ordinal         2)\r
+                   (object InterMessView "" @182\r
+                       location        (16, 576)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @183\r
+                           Parent_View         @182\r
+                           location    (1335, 532)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE013D0217"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @166\r
+                       supplier        @168\r
+                       Focus_Src       @167\r
+                       Focus_Entry     @169\r
+                       origin          (1183, 576)\r
+                       terminus        (1488, 576)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @184\r
+                       location        (1504, 704)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @185\r
+                           Parent_View         @184\r
+                           location    (1487, 660)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE01830330"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @166\r
+                       supplier        @170\r
+                       Focus_Src       @167\r
+                       Focus_Entry     @171\r
+                       origin          (1183, 704)\r
+                       terminus        (1792, 704)\r
+                       ordinal         4)\r
+                   (object InterMessView "" @186\r
+                       location        (1504, 832)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @187\r
+                           Parent_View         @186\r
+                           location    (1487, 788)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0188032C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   80\r
+                           justify     0\r
+                           label       "init()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @166\r
+                       supplier        @170\r
+                       Focus_Src       @167\r
+                       Focus_Entry     @172\r
+                       origin          (1183, 832)\r
+                       terminus        (1792, 832)\r
+                       ordinal         5)\r
+                   (object InterMessView "" @188\r
+                       location        (16, 928)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @189\r
+                           Parent_View         @188\r
+                           location    (1655, 884)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE01BC038C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @166\r
+                       supplier        @173\r
+                       Focus_Src       @167\r
+                       Focus_Entry     @174\r
+                       origin          (1183, 928)\r
+                       terminus        (2128, 928)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @190\r
+                       location        (16, 1008)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @191\r
+                           Parent_View         @190\r
+                           location    (1655, 964)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE01C30164"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   80\r
+                           justify     0\r
+                           label       "init()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @166\r
+                       supplier        @173\r
+                       Focus_Src       @167\r
+                       Focus_Entry     @175\r
+                       origin          (1183, 1008)\r
+                       terminus        (2128, 1008)\r
+                       ordinal         7)\r
+                   (object NoteView @192\r
+                       location        (2144, 2016)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @192\r
+                           location    (1947, 1957)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   359\r
+                           label       "#2 Catalina.initialize()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           419\r
+                       height          131)))\r
+           (object InteractionDiagram "3. catalina_start"\r
+               mechanism_ref   @84\r
+               quid            "3DFE026D02D1"\r
+               title           "3. catalina_start"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        2481\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "Bootstrap" @193\r
+                       location        (192, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @193\r
+                           location    (192, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Bootstrap")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE027700F5"\r
+                       width           300\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @194\r
+                           location    (192, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @193\r
+                           height      2662\r
+                           y_coord     2602\r
+                           Nested      FALSE))\r
+                   (object InterObjView "Catalina" @195\r
+                       location        (480, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @195\r
+                           location    (480, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Catalina")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE027D0067"\r
+                       width           300\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @196\r
+                           location    (480, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @195\r
+                           height      2602\r
+                           y_coord     2542\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardServer" @197\r
+                       location        (784, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @197\r
+                           location    (784, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardServer")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE02B30015"\r
+                       width           300\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @198\r
+                           location    (784, 416)\r
+                           line_color  3342489\r
+                           InterObjView        @197\r
+                           height      2510\r
+                           y_coord     2450\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @199\r
+                           location    (784, 480)\r
+                           line_color  3342489\r
+                           InterObjView        @197\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @200\r
+                           location    (784, 592)\r
+                           line_color  3342489\r
+                           InterObjView        @197\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardService" @201\r
+                       location        (1088, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @201\r
+                           location    (1088, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardService")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE030400E3"\r
+                       width           300\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @202\r
+                           location    (1088, 704)\r
+                           line_color  3342489\r
+                           InterObjView        @201\r
+                           height      2162\r
+                           y_coord     2102\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @203\r
+                           location    (1088, 752)\r
+                           line_color  3342489\r
+                           InterObjView        @201\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @204\r
+                           location    (1088, 864)\r
+                           line_color  3342489\r
+                           InterObjView        @201\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardEngine" @205\r
+                       location        (1424, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @205\r
+                           location    (1424, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   332\r
+                           justify     0\r
+                           label       "StandardEngine")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE034700C2"\r
+                       width           350\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @206\r
+                           location    (1424, 976)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      1830\r
+                           y_coord     1770\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @207\r
+                           location    (1424, 1056)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      1744\r
+                           y_coord     1684\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @208\r
+                           location    (1424, 1056)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @209\r
+                           location    (1424, 1168)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @210\r
+                           location    (1424, 1296)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @211\r
+                           location    (1424, 1408)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @212\r
+                           location    (1424, 1536)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @213\r
+                           location    (1424, 1648)\r
+                           line_color  3342489\r
+                           InterObjView        @205\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardHost" @214\r
+                       location        (1760, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @214\r
+                           location    (1760, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardHost")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE03F2035D"\r
+                       width           300\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @215\r
+                           location    (1760, 1760)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      980\r
+                           y_coord     920\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @216\r
+                           location    (1760, 1808)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @217\r
+                           location    (1760, 1920)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @218\r
+                           location    (1760, 2032)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @219\r
+                           location    (1760, 2144)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @220\r
+                           location    (1760, 2256)\r
+                           line_color  3342489\r
+                           InterObjView        @214\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardPipeline" @221\r
+                       location        (2080, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @221\r
+                           location    (2080, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   326\r
+                           justify     0\r
+                           label       "StandardPipeline")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE047D006D"\r
+                       width           344\r
+                       height          2912\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @222\r
+                           location    (2080, 2368)\r
+                           line_color  3342489\r
+                           InterObjView        @221\r
+                           height      312\r
+                           y_coord     252\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @223\r
+                           location    (2080, 2416)\r
+                           line_color  3342489\r
+                           InterObjView        @221\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @224\r
+                           location    (2080, 2480)\r
+                           line_color  3342489\r
+                           InterObjView        @221\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @225\r
+                           location    (2080, 2560)\r
+                           line_color  3342489\r
+                           InterObjView        @221\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterMessView "" @226\r
+                       location        (16, 384)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @227\r
+                           Parent_View         @226\r
+                           location    (335, 340)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE02830374"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @193\r
+                       supplier        @195\r
+                       Focus_Src       @194\r
+                       Focus_Entry     @196\r
+                       origin          (207, 384)\r
+                       terminus        (464, 384)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @228\r
+                       location        (16, 416)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @229\r
+                           Parent_View         @228\r
+                           location    (631, 372)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE02BA0188"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @195\r
+                       supplier        @197\r
+                       Focus_Src       @196\r
+                       Focus_Entry     @198\r
+                       origin          (495, 416)\r
+                       terminus        (768, 416)\r
+                       ordinal         1)\r
+                   (object SelfMessView "" @230\r
+                       location        (16, 480)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @231\r
+                           Parent_View         @230\r
+                           location    (1244, 437)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE02D3006C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   854\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                           pctDist     2.960000\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @197\r
+                       supplier        @197\r
+                       Focus_Src       @198\r
+                       Focus_Entry     @199\r
+                       origin          (800, 480)\r
+                       terminus        (950, 480)\r
+                       ordinal         2)\r
+                   (object SelfMessView "" @232\r
+                       location        (16, 592)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @233\r
+                           Parent_View         @232\r
+                           location    (1146, 549)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE02DF02DF"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   658\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(START_EVENT)"\r
+                           pctDist     2.313333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @197\r
+                       supplier        @197\r
+                       Focus_Src       @198\r
+                       Focus_Entry     @200\r
+                       origin          (800, 592)\r
+                       terminus        (950, 592)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @234\r
+                       location        (16, 704)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @235\r
+                           Parent_View         @234\r
+                           location    (935, 660)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE030C02B3"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @197\r
+                       supplier        @201\r
+                       Focus_Src       @198\r
+                       Focus_Entry     @202\r
+                       origin          (799, 704)\r
+                       terminus        (1072, 704)\r
+                       ordinal         4)\r
+                   (object SelfMessView "" @236\r
+                       location        (16, 752)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @237\r
+                           Parent_View         @236\r
+                           location    (1531, 708)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE031D0022"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   854\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                           pctDist     2.853333\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @201\r
+                       supplier        @201\r
+                       Focus_Src       @202\r
+                       Focus_Entry     @203\r
+                       origin          (1104, 752)\r
+                       terminus        (1254, 752)\r
+                       ordinal         5)\r
+                   (object SelfMessView "" @238\r
+                       location        (16, 864)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @239\r
+                           Parent_View         @238\r
+                           location    (1449, 821)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0330019B"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   658\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(START_EVENT)"\r
+                           pctDist     2.306667\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @201\r
+                       supplier        @201\r
+                       Focus_Src       @202\r
+                       Focus_Entry     @204\r
+                       origin          (1104, 864)\r
+                       terminus        (1254, 864)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @240\r
+                       location        (16, 976)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @241\r
+                           Parent_View         @240\r
+                           location    (1255, 932)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0370018A"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @201\r
+                       supplier        @205\r
+                       Focus_Src       @202\r
+                       Focus_Entry     @206\r
+                       origin          (1103, 976)\r
+                       terminus        (1408, 976)\r
+                       ordinal         7)\r
+                   (object SelfMessView "" @242\r
+                       location        (16, 1056)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @243\r
+                           Parent_View         @242\r
+                           location    (1865, 1014)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03750051"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   854\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                           pctDist     2.840000\r
+                           height      43\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @208\r
+                       origin          (1440, 1056)\r
+                       terminus        (1590, 1056)\r
+                       ordinal         8)\r
+                   (object SelfMessView "" @244\r
+                       location        (16, 1168)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @245\r
+                           Parent_View         @244\r
+                           location    (1639, 1141)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0389001C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   373\r
+                           justify     0\r
+                           label       "addDefaultMapper()"\r
+                           pctDist     1.326667\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @209\r
+                       origin          (1440, 1168)\r
+                       terminus        (1590, 1168)\r
+                       ordinal         9)\r
+                   (object SelfMessView "" @246\r
+                       location        (16, 1296)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @247\r
+                           Parent_View         @246\r
+                           location    (1592, 1268)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03980281"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   238\r
+                           justify     0\r
+                           label       "logger.start()"\r
+                           pctDist     1.020000\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @210\r
+                       origin          (1440, 1296)\r
+                       terminus        (1590, 1296)\r
+                       ordinal         10)\r
+                   (object SelfMessView "" @248\r
+                       location        (16, 1408)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @249\r
+                           Parent_View         @248\r
+                           location    (1593, 1380)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03A80107"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   226\r
+                           justify     0\r
+                           label       "realm.start()"\r
+                           pctDist     1.026667\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @211\r
+                       origin          (1440, 1408)\r
+                       terminus        (1590, 1408)\r
+                       ordinal         11)\r
+                   (object SelfMessView "" @250\r
+                       location        (16, 1536)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @251\r
+                           Parent_View         @250\r
+                           location    (1608, 1508)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03BD000D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   259\r
+                           justify     0\r
+                           label       "findMappers()"\r
+                           pctDist     1.120000\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @212\r
+                       origin          (1440, 1536)\r
+                       terminus        (1590, 1536)\r
+                       ordinal         12)\r
+                   (object SelfMessView "" @252\r
+                       location        (16, 1648)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @253\r
+                           Parent_View         @252\r
+                           location    (1515, 1604)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03E000A4"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   251\r
+                           justify     0\r
+                           label       "findChildren()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @205\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @213\r
+                       origin          (1440, 1648)\r
+                       terminus        (1590, 1648)\r
+                       ordinal         13)\r
+                   (object InterMessView "" @254\r
+                       location        (1664, 1760)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @255\r
+                           Parent_View         @254\r
+                           location    (1591, 1716)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE03FB027A"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @205\r
+                       supplier        @214\r
+                       Focus_Src       @207\r
+                       Focus_Entry     @215\r
+                       origin          (1439, 1760)\r
+                       terminus        (1744, 1760)\r
+                       ordinal         14)\r
+                   (object SelfMessView "" @256\r
+                       location        (16, 1808)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @257\r
+                           Parent_View         @256\r
+                           location    (1606, 1784)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE043B02AE"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   854\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                           pctDist     -1.133333\r
+                           height      24\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @214\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @216\r
+                       origin          (1776, 1808)\r
+                       terminus        (1926, 1808)\r
+                       ordinal         15)\r
+                   (object SelfMessView "" @258\r
+                       location        (16, 1920)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @259\r
+                           Parent_View         @258\r
+                           location    (1963, 1877)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE045C021F"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   373\r
+                           justify     0\r
+                           label       "addDefaultMapper()"\r
+                           pctDist     1.253333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @214\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @217\r
+                       origin          (1776, 1920)\r
+                       terminus        (1926, 1920)\r
+                       ordinal         16)\r
+                   (object InterMessView "" @260\r
+                       location        (2000, 2368)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @261\r
+                           Parent_View         @260\r
+                           location    (1919, 2324)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE048E00B9"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @221\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @222\r
+                       origin          (1775, 2368)\r
+                       terminus        (2064, 2368)\r
+                       ordinal         20)\r
+                   (object SelfMessView "" @262\r
+                       location        (16, 2032)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @263\r
+                           Parent_View         @262\r
+                           location    (1916, 2004)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE049B000C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   238\r
+                           justify     0\r
+                           label       "logger.start()"\r
+                           pctDist     0.933333\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @214\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @218\r
+                       origin          (1776, 2032)\r
+                       terminus        (1926, 2032)\r
+                       ordinal         17)\r
+                   (object SelfMessView "" @264\r
+                       location        (16, 2144)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @265\r
+                           Parent_View         @264\r
+                           location    (1916, 2117)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE04A303BB"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   238\r
+                           justify     0\r
+                           label       "findMapper()"\r
+                           pctDist     0.933333\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @214\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @219\r
+                       origin          (1776, 2144)\r
+                       terminus        (1926, 2144)\r
+                       ordinal         18)\r
+                   (object SelfMessView "" @266\r
+                       location        (16, 2256)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @267\r
+                           Parent_View         @266\r
+                           location    (1916, 2228)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE04A90342"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   251\r
+                           justify     0\r
+                           label       "findChildren()"\r
+                           pctDist     0.933333\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @214\r
+                       supplier        @214\r
+                       Focus_Src       @215\r
+                       Focus_Entry     @220\r
+                       origin          (1776, 2256)\r
+                       terminus        (1926, 2256)\r
+                       ordinal         19)\r
+                   (object NoteView @268\r
+                       location        (2128, 1488)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @268\r
+                           location    (1915, 1422)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   390\r
+                           label       "#1 Catalina.start()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           450\r
+                       height          144)\r
+                   (object SelfMessView "" @269\r
+                       location        (16, 2416)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @270\r
+                           Parent_View         @269\r
+                           location    (1644, 2498)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE05780138"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   854\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(BEFORE_START_EVENT)"\r
+                           pctDist     -3.020000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @221\r
+                       supplier        @221\r
+                       Focus_Src       @222\r
+                       Focus_Entry     @223\r
+                       origin          (2096, 2416)\r
+                       terminus        (2246, 2416)\r
+                       ordinal         21)\r
+                   (object SelfMessView "" @271\r
+                       location        (16, 2480)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @272\r
+                           Parent_View         @271\r
+                           location    (1705, 2582)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE05A80398"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   658\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(START_EVENT)"\r
+                           pctDist     -2.613333\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @221\r
+                       supplier        @221\r
+                       Focus_Src       @222\r
+                       Focus_Entry     @224\r
+                       origin          (2096, 2480)\r
+                       terminus        (2246, 2480)\r
+                       ordinal         22)\r
+                   (object SelfMessView "" @273\r
+                       location        (16, 2560)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @274\r
+                           Parent_View         @273\r
+                           location    (1737, 2423)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE05BA0196"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   658\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(AFTER_EVENT)"\r
+                           pctDist     -2.393333\r
+                           height      138\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @221\r
+                       supplier        @221\r
+                       Focus_Src       @222\r
+                       Focus_Entry     @225\r
+                       origin          (2096, 2560)\r
+                       terminus        (2246, 2560)\r
+                       ordinal         23)\r
+                   (object NoteView @275\r
+                       location        (960, 1680)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @275\r
+                           location    (635, 1571)\r
+                           fill_color  13434879\r
+                           nlines      4\r
+                           max_width   615\r
+                           label       "All StandardX will fire these events.")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           675\r
+                       height          231)\r
+                   (object AttachView "" @276\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @275\r
+                       supplier        @272\r
+                       line_style      0)\r
+                   (object AttachView "" @277\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @275\r
+                       supplier        @270\r
+                       line_style      0)\r
+                   (object AttachView "" @278\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @275\r
+                       supplier        @274\r
+                       line_style      0)))\r
+           (object InteractionDiagram "4. catalina_start_2"\r
+               mechanism_ref   @85\r
+               quid            "3DFE050900BF"\r
+               title           "4. catalina_start_2"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        1087\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "StandardHost" @279\r
+                       location        (208, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @279\r
+                           location    (208, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardHost")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE0538017B"\r
+                       width           300\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @280\r
+                           location    (208, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @279\r
+                           height      1864\r
+                           y_coord     1804\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @281\r
+                           location    (208, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @279\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @282\r
+                           location    (208, 1088)\r
+                           line_color  3342489\r
+                           InterObjView        @279\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @283\r
+                           location    (208, 1616)\r
+                           line_color  3342489\r
+                           InterObjView        @279\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "HostConfig" @284\r
+                       location        (544, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @284\r
+                           location    (544, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "HostConfig")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE06A60131"\r
+                       width           300\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @285\r
+                           location    (544, 512)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      696\r
+                           y_coord     636\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @286\r
+                           location    (544, 576)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @287\r
+                           location    (544, 688)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @288\r
+                           location    (544, 784)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @289\r
+                           location    (544, 896)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @290\r
+                           location    (544, 1008)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @291\r
+                           location    (544, 1536)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      200\r
+                           y_coord     140\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @292\r
+                           location    (544, 1536)\r
+                           line_color  3342489\r
+                           InterObjView        @284\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardHostDeployer" @293\r
+                       location        (944, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @293\r
+                           location    (944, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   426\r
+                           justify     0\r
+                           label       "StandardHostDeployer")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE079A0055"\r
+                       width           444\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @294\r
+                           location    (944, 1280)\r
+                           line_color  3342489\r
+                           InterObjView        @293\r
+                           height      824\r
+                           y_coord     764\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @295\r
+                           location    (944, 2128)\r
+                           line_color  3342489\r
+                           InterObjView        @293\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "Digester" @296\r
+                       location        (1328, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @296\r
+                           location    (1328, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Digester")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE07C9034C"\r
+                       width           300\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @297\r
+                           location    (1328, 1280)\r
+                           line_color  3342489\r
+                           InterObjView        @296\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @298\r
+                           location    (1328, 1488)\r
+                           line_color  3342489\r
+                           InterObjView        @296\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @299\r
+                           location    (1328, 1984)\r
+                           line_color  3342489\r
+                           InterObjView        @296\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "ContextRuleSet" @300\r
+                       location        (1648, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @300\r
+                           location    (1648, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "ContextRuleSet")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE0834016F"\r
+                       width           300\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @301\r
+                           location    (1648, 1408)\r
+                           line_color  3342489\r
+                           InterObjView        @300\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @302\r
+                           location    (1648, 1888)\r
+                           line_color  3342489\r
+                           InterObjView        @300\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "NamingRuleSet" @303\r
+                       location        (1968, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @303\r
+                           location    (1968, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "NamingRuleSet")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE08D00173"\r
+                       width           300\r
+                       height          2114\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @304\r
+                           location    (1968, 1792)\r
+                           line_color  3342489\r
+                           InterObjView        @303\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object SelfMessView "" @305\r
+                       location        (0, 384)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @306\r
+                           Parent_View         @305\r
+                           location    (555, 342)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE066C0341"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   651\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(START_EVENT)"\r
+                           pctDist     2.206667\r
+                           height      43\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @279\r
+                       supplier        @279\r
+                       Focus_Src       @280\r
+                       Focus_Entry     @281\r
+                       origin          (224, 384)\r
+                       terminus        (374, 384)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @307\r
+                       location        (384, 512)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @308\r
+                           Parent_View         @307\r
+                           location    (486, 468)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE06D20294"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   507\r
+                           justify     0\r
+                           label       "interested[i].lifecycleEvent()"\r
+                           pctDist     0.865574\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @279\r
+                       supplier        @284\r
+                       Focus_Src       @280\r
+                       Focus_Entry     @285\r
+                       origin          (223, 512)\r
+                       terminus        (528, 512)\r
+                       ordinal         1)\r
+                   (object SelfMessView "" @309\r
+                       location        (16, 576)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @310\r
+                           Parent_View         @309\r
+                           location    (713, 537)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE06E9028D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   297\r
+                           justify     0\r
+                           label       "setDeployXML()"\r
+                           pctDist     1.026667\r
+                           height      40\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @286\r
+                       origin          (560, 576)\r
+                       terminus        (710, 576)\r
+                       ordinal         2)\r
+                   (object SelfMessView "" @311\r
+                       location        (16, 688)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @312\r
+                           Parent_View         @311\r
+                           location    (714, 645)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE06F300FF"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   288\r
+                           justify     0\r
+                           label       "setLiveDeploy()"\r
+                           pctDist     1.033333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @287\r
+                       origin          (560, 688)\r
+                       terminus        (710, 688)\r
+                       ordinal         3)\r
+                   (object SelfMessView "" @313\r
+                       location        (16, 784)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @314\r
+                           Parent_View         @313\r
+                           location    (732, 756)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE06FB00D9"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   326\r
+                           justify     0\r
+                           label       "setUnpacksWar()"\r
+                           pctDist     1.153333\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @288\r
+                       origin          (560, 784)\r
+                       terminus        (710, 784)\r
+                       ordinal         4)\r
+                   (object SelfMessView "" @315\r
+                       location        (16, 896)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @316\r
+                           Parent_View         @315\r
+                           location    (747, 868)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE070C0015"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   350\r
+                           justify     0\r
+                           label       "setXMLValidation()"\r
+                           pctDist     1.246667\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @289\r
+                       origin          (560, 896)\r
+                       terminus        (710, 896)\r
+                       ordinal         5)\r
+                   (object SelfMessView "" @317\r
+                       location        (16, 1008)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @318\r
+                           Parent_View         @317\r
+                           location    (762, 980)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE073B0031"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   359\r
+                           justify     0\r
+                           label       "deployDescriptors()"\r
+                           pctDist     1.346667\r
+                           height      29\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @290\r
+                       origin          (560, 1008)\r
+                       terminus        (710, 1008)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @319\r
+                       location        (16, 1088)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @320\r
+                           Parent_View         @319\r
+                           location    (376, 1044)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE078B03BB"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   136\r
+                           justify     0\r
+                           label       "install()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @279\r
+                       Focus_Src       @285\r
+                       Focus_Entry     @282\r
+                       origin          (528, 1088)\r
+                       terminus        (224, 1088)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @321\r
+                       location        (576, 1280)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @322\r
+                           Parent_View         @321\r
+                           location    (575, 1236)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE07B100BE"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   136\r
+                           justify     0\r
+                           label       "install()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @279\r
+                       supplier        @293\r
+                       Focus_Src       @280\r
+                       Focus_Entry     @294\r
+                       origin          (223, 1280)\r
+                       terminus        (928, 1280)\r
+                       ordinal         8)\r
+                   (object InterMessView "" @323\r
+                       location        (1152, 1280)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @324\r
+                           Parent_View         @323\r
+                           location    (1135, 1236)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE07D200ED"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   144\r
+                           justify     0\r
+                           label       "create()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @296\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @297\r
+                       origin          (959, 1280)\r
+                       terminus        (1312, 1280)\r
+                       ordinal         9)\r
+                   (object InterMessView "" @325\r
+                       location        (1136, 1984)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @326\r
+                           Parent_View         @325\r
+                           location    (1135, 1940)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE07D603D7"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   136\r
+                           justify     0\r
+                           label       "parse()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @296\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @299\r
+                       origin          (959, 1984)\r
+                       terminus        (1312, 1984)\r
+                       ordinal         16)\r
+                   (object InterMessView "" @327\r
+                       location        (1296, 1408)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @328\r
+                           Parent_View         @327\r
+                           location    (1295, 1364)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE08DA029B"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @300\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @301\r
+                       origin          (959, 1408)\r
+                       terminus        (1632, 1408)\r
+                       ordinal         10)\r
+                   (object InterMessView "" @329\r
+                       location        (1456, 1792)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @330\r
+                           Parent_View         @329\r
+                           location    (1455, 1748)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE08E00091"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @303\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @304\r
+                       origin          (959, 1792)\r
+                       terminus        (1952, 1792)\r
+                       ordinal         14)\r
+                   (object InterMessView "" @331\r
+                       location        (16, 1488)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @332\r
+                           Parent_View         @331\r
+                           location    (1182, 1445)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE08FA003D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   387\r
+                           justify     0\r
+                           label       "add(ContextRuleSet)"\r
+                           pctDist     0.631728\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @296\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @298\r
+                       origin          (959, 1488)\r
+                       terminus        (1312, 1488)\r
+                       ordinal         11)\r
+                   (object InterMessView "" @333\r
+                       location        (1296, 1888)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @334\r
+                           Parent_View         @333\r
+                           location    (1295, 1844)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0907015F"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   416\r
+                           justify     0\r
+                           label       "add(NamingRuleSet())"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @293\r
+                       supplier        @300\r
+                       Focus_Src       @294\r
+                       Focus_Entry     @302\r
+                       origin          (959, 1888)\r
+                       terminus        (1632, 1888)\r
+                       ordinal         15)\r
+                   (object NoteView @335\r
+                       location        (2096, 2384)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @335\r
+                           location    (1893, 2315)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   371\r
+                           label       "#2 Catalina.start()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           431\r
+                       height          150)\r
+                   (object SelfMessView "" @336\r
+                       location        (16, 1536)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @337\r
+                           Parent_View         @336\r
+                           location    (697, 1493)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE131F0327"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   244\r
+                           justify     0\r
+                           label       "deployApps()"\r
+                           pctDist     0.913333\r
+                           height      43\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @284\r
+                       Focus_Src       @291\r
+                       Focus_Entry     @292\r
+                       origin          (560, 1536)\r
+                       terminus        (710, 1536)\r
+                       ordinal         12)\r
+                   (object InterMessView "" @338\r
+                       location        (16, 1616)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @339\r
+                           Parent_View         @338\r
+                           location    (376, 1572)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE132D0309"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   136\r
+                           justify     0\r
+                           label       "install()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @284\r
+                       supplier        @279\r
+                       Focus_Src       @291\r
+                       Focus_Entry     @283\r
+                       origin          (528, 1616)\r
+                       terminus        (224, 1616)\r
+                       ordinal         13)\r
+                   (object InterMessView "" @340\r
+                       location        (576, 2128)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @341\r
+                           Parent_View         @340\r
+                           location    (575, 2084)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE133A036C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   463\r
+                           justify     0\r
+                           label       "install() // same as above"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @279\r
+                       supplier        @293\r
+                       Focus_Src       @280\r
+                       Focus_Entry     @295\r
+                       origin          (223, 2128)\r
+                       terminus        (928, 2128)\r
+                       ordinal         17)))\r
+           (object InteractionDiagram "5. catalina_start_3"\r
+               mechanism_ref   @86\r
+               quid            "3DFE094A0346"\r
+               title           "5. catalina_start_3"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "Digester" @342\r
+                       location        (176, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @342\r
+                           location    (176, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Digester")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE095A0371"\r
+                       width           300\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @343\r
+                           location    (176, 352)\r
+                           line_color  3342489\r
+                           InterObjView        @342\r
+                           height      996\r
+                           y_coord     936\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @344\r
+                           location    (176, 352)\r
+                           line_color  3342489\r
+                           InterObjView        @342\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @345\r
+                           location    (176, 448)\r
+                           line_color  3342489\r
+                           InterObjView        @342\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "Rule" @346\r
+                       location        (480, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @346\r
+                           location    (480, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Rule")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE0E7400D0"\r
+                       width           300\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @347\r
+                           location    (480, 560)\r
+                           line_color  3342489\r
+                           InterObjView        @346\r
+                           height      728\r
+                           y_coord     668\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardContext" @348\r
+                       location        (816, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @348\r
+                           location    (816, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   332\r
+                           justify     0\r
+                           label       "StandardContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE0FC502A1"\r
+                       width           350\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @349\r
+                           location    (816, 592)\r
+                           line_color  3342489\r
+                           InterObjView        @348\r
+                           height      264\r
+                           y_coord     204\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @350\r
+                           location    (816, 1008)\r
+                           line_color  3342489\r
+                           InterObjView        @348\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardPipeline" @351\r
+                       location        (1184, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @351\r
+                           location    (1184, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   363\r
+                           justify     0\r
+                           label       "StandardPipeline")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE112F003F"\r
+                       width           381\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @352\r
+                           location    (1184, 736)\r
+                           line_color  3342489\r
+                           InterObjView        @351\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardContextValve" @353\r
+                       location        (1552, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @353\r
+                           location    (1552, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   300\r
+                           justify     0\r
+                           label       "StandardContextValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE110D0375"\r
+                       width           318\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @354\r
+                           location    (1552, 624)\r
+                           line_color  3342489\r
+                           InterObjView        @353\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "SetPropertiesRule" @355\r
+                       location        (1920, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @355\r
+                           location    (1920, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   363\r
+                           justify     0\r
+                           label       "SetPropertiesRule")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE100303A4"\r
+                       width           381\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @356\r
+                           location    (1920, 928)\r
+                           line_color  3342489\r
+                           InterObjView        @355\r
+                           height      200\r
+                           y_coord     140\r
+                           Nested      FALSE))\r
+                   (object InterObjView "SetNextRule" @357\r
+                       location        (2272, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @357\r
+                           location    (2272, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "SetNextRule")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE12690267"\r
+                       width           300\r
+                       height          1214\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @358\r
+                           location    (2272, 1168)\r
+                           line_color  3342489\r
+                           InterObjView        @357\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object SelfMessView "" @359\r
+                       location        (0, 352)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @360\r
+                           Parent_View         @359\r
+                           location    (267, 308)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0E7801DB"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   108\r
+                           justify     0\r
+                           label       "parse"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @342\r
+                       supplier        @342\r
+                       Focus_Src       @343\r
+                       Focus_Entry     @344\r
+                       origin          (192, 352)\r
+                       terminus        (342, 352)\r
+                       ordinal         0)\r
+                   (object SelfMessView "" @361\r
+                       location        (16, 448)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @362\r
+                           Parent_View         @361\r
+                           location    (345, 420)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0F2F03D2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   267\r
+                           justify     0\r
+                           label       "startElement()"\r
+                           pctDist     1.020000\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @342\r
+                       supplier        @342\r
+                       Focus_Src       @343\r
+                       Focus_Entry     @345\r
+                       origin          (192, 448)\r
+                       terminus        (342, 448)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @363\r
+                       location        (336, 560)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @364\r
+                           Parent_View         @363\r
+                           location    (327, 516)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0F400214"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   132\r
+                           justify     0\r
+                           label       "begin()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @342\r
+                       supplier        @346\r
+                       Focus_Src       @343\r
+                       Focus_Entry     @347\r
+                       origin          (191, 560)\r
+                       terminus        (464, 560)\r
+                       ordinal         2)\r
+                   (object InterMessView "" @365\r
+                       location        (16, 592)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @366\r
+                           Parent_View         @365\r
+                           location    (647, 548)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE0FD30266"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   265\r
+                           justify     0\r
+                           label       "newInstance()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @346\r
+                       supplier        @348\r
+                       Focus_Src       @347\r
+                       Focus_Entry     @349\r
+                       origin          (495, 592)\r
+                       terminus        (800, 592)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @367\r
+                       location        (864, 928)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @368\r
+                           Parent_View         @367\r
+                           location    (1199, 884)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE102002E9"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   132\r
+                           justify     0\r
+                           label       "begin()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @346\r
+                       supplier        @355\r
+                       Focus_Src       @347\r
+                       Focus_Entry     @356\r
+                       origin          (495, 928)\r
+                       terminus        (1904, 928)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @369\r
+                       location        (1008, 736)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @370\r
+                           Parent_View         @369\r
+                           location    (1139, 693)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE114A0193"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   610\r
+                           justify     0\r
+                           label       "setBasic(StandardContextValve)"\r
+                           pctDist     0.915014\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @348\r
+                       supplier        @351\r
+                       Focus_Src       @349\r
+                       Focus_Entry     @352\r
+                       origin          (831, 736)\r
+                       terminus        (1168, 736)\r
+                       ordinal         5)\r
+                   (object InterMessView "" @371\r
+                       location        (16, 624)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @372\r
+                           Parent_View         @371\r
+                           location    (1183, 580)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE115E001F"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   106\r
+                           justify     0\r
+                           label       "new()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @348\r
+                       supplier        @353\r
+                       Focus_Src       @349\r
+                       Focus_Entry     @354\r
+                       origin          (831, 624)\r
+                       terminus        (1536, 624)\r
+                       ordinal         4)\r
+                   (object InterMessView "" @373\r
+                       location        (1440, 1008)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @374\r
+                           Parent_View         @373\r
+                           location    (1368, 964)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE11D50391"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   1190\r
+                           justify     0\r
+                           label       "//Using BeanUtil, set the object properties (from ex: admin.xml)"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @355\r
+                       supplier        @348\r
+                       Focus_Src       @356\r
+                       Focus_Entry     @350\r
+                       origin          (1904, 1008)\r
+                       terminus        (832, 1008)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @375\r
+                       location        (1392, 1168)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @376\r
+                           Parent_View         @375\r
+                           location    (1375, 1124)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE128501C8"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   99\r
+                           justify     0\r
+                           label       "end()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @346\r
+                       supplier        @357\r
+                       Focus_Src       @347\r
+                       Focus_Entry     @358\r
+                       origin          (495, 1168)\r
+                       terminus        (2256, 1168)\r
+                       ordinal         8)\r
+                   (object NoteView @377\r
+                       location        (1216, 80)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @377\r
+                           location    (900, 15)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   596\r
+                           label       "HostConfig.deployDescriptor()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           656\r
+                       height          143)\r
+                   (object NoteView @378\r
+                       location        (2128, 1888)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @378\r
+                           location    (1947, 1822)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   327\r
+                           label       "#3 Catalina.start()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           387\r
+                       height          144)))\r
+           (object InteractionDiagram "6. catalina_start_4"\r
+               mechanism_ref   @87\r
+               quid            "3DFE13890008"\r
+               title           "6. catalina_start_4"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        1818\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "Digester" @379\r
+                       location        (176, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @379\r
+                           location    (176, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Digester")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE13960364"\r
+                       width           300\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @380\r
+                           location    (176, 336)\r
+                           line_color  3342489\r
+                           InterObjView        @379\r
+                           height      1228\r
+                           y_coord     1168\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @381\r
+                           location    (176, 336)\r
+                           line_color  3342489\r
+                           InterObjView        @379\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @382\r
+                           location    (176, 480)\r
+                           line_color  3342489\r
+                           InterObjView        @379\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @383\r
+                           location    (176, 1616)\r
+                           line_color  3342489\r
+                           InterObjView        @379\r
+                           height      580\r
+                           y_coord     520\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @384\r
+                           location    (176, 1728)\r
+                           line_color  3342489\r
+                           InterObjView        @379\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardHostDeployer" @385\r
+                       location        (480, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @385\r
+                           location    (480, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   301\r
+                           justify     0\r
+                           label       "StandardHostDeployer")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE1D8A02DC"\r
+                       width           319\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @386\r
+                           location    (480, 576)\r
+                           line_color  3342489\r
+                           InterObjView        @385\r
+                           height      928\r
+                           y_coord     868\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardHost" @387\r
+                       location        (800, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @387\r
+                           location    (800, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardHost")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE1DF20141"\r
+                       width           300\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @388\r
+                           location    (800, 592)\r
+                           line_color  3342489\r
+                           InterObjView        @387\r
+                           height      852\r
+                           y_coord     792\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardContext" @389\r
+                       location        (1120, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @389\r
+                           location    (1120, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   295\r
+                           justify     0\r
+                           label       "StandardContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE196D00D9"\r
+                       width           313\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @390\r
+                           location    (1120, 624)\r
+                           line_color  3342489\r
+                           InterObjView        @389\r
+                           height      760\r
+                           y_coord     700\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @391\r
+                           location    (1120, 800)\r
+                           line_color  3342489\r
+                           InterObjView        @389\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @392\r
+                           location    (1120, 976)\r
+                           line_color  3342489\r
+                           InterObjView        @389\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @393\r
+                           location    (1120, 1072)\r
+                           line_color  3342489\r
+                           InterObjView        @389\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "WebappLoader" @394\r
+                       location        (1440, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @394\r
+                           location    (1440, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   295\r
+                           justify     0\r
+                           label       "WebappLoader")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE1FFA0347"\r
+                       width           313\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @395\r
+                           location    (1440, 640)\r
+                           line_color  3342489\r
+                           InterObjView        @394\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardManager" @396\r
+                       location        (1760, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @396\r
+                           location    (1760, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   301\r
+                           justify     0\r
+                           label       "StandardManager")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE201F0105"\r
+                       width           319\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @397\r
+                           location    (1760, 832)\r
+                           line_color  3342489\r
+                           InterObjView        @396\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @398\r
+                           location    (1760, 1264)\r
+                           line_color  3342489\r
+                           InterObjView        @396\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterObjView "ContextConfig" @399\r
+                       location        (1952, 352)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @399\r
+                           location    (1952, 352)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "ContextConfig")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE2087028C"\r
+                       width           300\r
+                       height          2318\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @400\r
+                           location    (1952, 412)\r
+                           InterObjView        @399\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @401\r
+                           location    (1952, 1136)\r
+                           line_color  3342489\r
+                           InterObjView        @399\r
+                           height      1444\r
+                           y_coord     1384\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @402\r
+                           location    (1952, 1264)\r
+                           line_color  3342489\r
+                           InterObjView        @399\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @403\r
+                           location    (1952, 1456)\r
+                           line_color  3342489\r
+                           InterObjView        @399\r
+                           height      1070\r
+                           y_coord     1010\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @404\r
+                           location    (1952, 1568)\r
+                           line_color  3342489\r
+                           InterObjView        @399\r
+                           height      952\r
+                           y_coord     892\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @405\r
+                           location    (1952, 1984)\r
+                           line_color  3342489\r
+                           InterObjView        @399\r
+                           height      152\r
+                           y_coord     92\r
+                           Nested      TRUE))\r
+                   (object SelfMessView "" @406\r
+                       location        (16, 336)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @407\r
+                           Parent_View         @406\r
+                           location    (267, 292)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE19AE0065"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   108\r
+                           justify     0\r
+                           label       "parse"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @379\r
+                       supplier        @379\r
+                       Focus_Src       @380\r
+                       Focus_Entry     @381\r
+                       origin          (192, 336)\r
+                       terminus        (342, 336)\r
+                       ordinal         0)\r
+                   (object SelfMessView "" @408\r
+                       location        (16, 480)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @409\r
+                           Parent_View         @408\r
+                           location    (328, 437)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE19B102E9"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   267\r
+                           justify     0\r
+                           label       "startElement()"\r
+                           pctDist     0.906667\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @379\r
+                       supplier        @379\r
+                       Focus_Src       @380\r
+                       Focus_Entry     @382\r
+                       origin          (192, 480)\r
+                       terminus        (342, 480)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @410\r
+                       location        (16, 576)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @411\r
+                           Parent_View         @410\r
+                           location    (327, 552)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE1DFB0022"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   165\r
+                           justify     0\r
+                           label       "addChild"\r
+                           pctDist     0.498645\r
+                           height      25\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @379\r
+                       supplier        @385\r
+                       Focus_Src       @380\r
+                       Focus_Entry     @386\r
+                       origin          (191, 576)\r
+                       terminus        (464, 576)\r
+                       ordinal         2)\r
+                   (object InterMessView "" @412\r
+                       location        (16, 592)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @413\r
+                           Parent_View         @412\r
+                           location    (639, 548)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE1FB60277"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   165\r
+                           justify     0\r
+                           label       "addChild"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @385\r
+                       supplier        @387\r
+                       Focus_Src       @386\r
+                       Focus_Entry     @388\r
+                       origin          (495, 592)\r
+                       terminus        (784, 592)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @414\r
+                       location        (16, 624)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @415\r
+                           Parent_View         @414\r
+                           location    (959, 580)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE1FC40228"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @387\r
+                       supplier        @389\r
+                       Focus_Src       @388\r
+                       Focus_Entry     @390\r
+                       origin          (815, 624)\r
+                       terminus        (1104, 624)\r
+                       ordinal         4)\r
+                   (object InterMessView "" @416\r
+                       location        (16, 640)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @417\r
+                           Parent_View         @416\r
+                           location    (1279, 596)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE200603BE"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   82\r
+                           justify     0\r
+                           label       "new"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @394\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @395\r
+                       origin          (1135, 640)\r
+                       terminus        (1424, 640)\r
+                       ordinal         5)\r
+                   (object SelfMessView "" @418\r
+                       location        (16, 800)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @419\r
+                           Parent_View         @418\r
+                           location    (1224, 756)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE200C029A"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   186\r
+                           justify     0\r
+                           label       "setLoader"\r
+                           pctDist     0.593333\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @389\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @391\r
+                       origin          (1136, 800)\r
+                       terminus        (1286, 800)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @420\r
+                       location        (16, 832)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @421\r
+                           Parent_View         @420\r
+                           location    (1439, 788)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE202C0250"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   82\r
+                           justify     0\r
+                           label       "new"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @396\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @397\r
+                       origin          (1135, 832)\r
+                       terminus        (1744, 832)\r
+                       ordinal         7)\r
+                   (object SelfMessView "" @422\r
+                       location        (16, 976)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @423\r
+                           Parent_View         @422\r
+                           location    (1260, 933)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE2032001C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   221\r
+                           justify     0\r
+                           label       "setManager"\r
+                           pctDist     0.833333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @389\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @392\r
+                       origin          (1136, 976)\r
+                       terminus        (1286, 976)\r
+                       ordinal         8)\r
+                   (object SelfMessView "" @424\r
+                       location        (16, 1072)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @425\r
+                           Parent_View         @424\r
+                           location    (1481, 1043)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE205B01A2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   658\r
+                           justify     0\r
+                           label       "fireLifecycleEvent(START_EVENT)"\r
+                           pctDist     2.306667\r
+                           height      30\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @389\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @393\r
+                       origin          (1136, 1072)\r
+                       terminus        (1286, 1072)\r
+                       ordinal         9)\r
+                   (object InterMessView "" @426\r
+                       location        (16, 1136)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @427\r
+                           Parent_View         @426\r
+                           location    (1535, 1092)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE20960003"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   745\r
+                           justify     0\r
+                           label       " // Notify interested LifecycleListeners"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @399\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @401\r
+                       origin          (1135, 1136)\r
+                       terminus        (1936, 1136)\r
+                       ordinal         10)\r
+                   (object SelfMessView "" @428\r
+                       location        (16, 1264)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @429\r
+                           Parent_View         @428\r
+                           location    (2043, 1220)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE20CF018C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @399\r
+                       Focus_Src       @401\r
+                       Focus_Entry     @402\r
+                       origin          (1968, 1264)\r
+                       terminus        (2118, 1264)\r
+                       ordinal         11)\r
+                   (object SelfMessView "" @430\r
+                       location        (16, 1456)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @431\r
+                           Parent_View         @430\r
+                           location    (2027, 1413)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE20E303E2"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   275\r
+                           justify     0\r
+                           label       "defaultConfig()"\r
+                           pctDist     0.393333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @399\r
+                       Focus_Src       @401\r
+                       Focus_Entry     @403\r
+                       origin          (1968, 1456)\r
+                       terminus        (2118, 1456)\r
+                       ordinal         13)\r
+                   (object SelfMessView "" @432\r
+                       location        (16, 1568)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @433\r
+                           Parent_View         @432\r
+                           location    (2043, 1524)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE211D01A1"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   349\r
+                           justify     0\r
+                           label       "applicationConfig()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @399\r
+                       Focus_Src       @401\r
+                       Focus_Entry     @404\r
+                       origin          (1968, 1568)\r
+                       terminus        (2118, 1568)\r
+                       ordinal         14)\r
+                   (object InterMessView "" @434\r
+                       location        (1664, 1264)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @435\r
+                           Parent_View         @434\r
+                           location    (1439, 1220)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE20B600E5"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   110\r
+                           justify     0\r
+                           label       "start()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @389\r
+                       supplier        @396\r
+                       Focus_Src       @390\r
+                       Focus_Entry     @398\r
+                       origin          (1135, 1264)\r
+                       terminus        (1744, 1264)\r
+                       ordinal         12)\r
+                   (object InterMessView "" @436\r
+                       location        (16, 1616)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @437\r
+                           Parent_View         @436\r
+                           location    (1064, 1572)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE21B60288"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   145\r
+                           justify     0\r
+                           label       "create()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @379\r
+                       Focus_Src       @404\r
+                       Focus_Entry     @383\r
+                       origin          (1936, 1616)\r
+                       terminus        (192, 1616)\r
+                       ordinal         15)\r
+                   (object SelfMessView "" @438\r
+                       location        (16, 1728)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @439\r
+                           Parent_View         @438\r
+                           location    (457, 1701)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE21BE021B"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   530\r
+                           justify     0\r
+                           label       "// Process web.xml * tld.xml"\r
+                           pctDist     1.773333\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @379\r
+                       supplier        @379\r
+                       Focus_Src       @383\r
+                       Focus_Entry     @384\r
+                       origin          (192, 1728)\r
+                       terminus        (342, 1728)\r
+                       ordinal         16)\r
+                   (object InterObjView "StandardWrapper" @440\r
+                       location        (2208, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @440\r
+                           location    (2208, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardWrapper")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE220C0122"\r
+                       width           300\r
+                       height          2446\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @441\r
+                           location    (2208, 2016)\r
+                           line_color  3342489\r
+                           InterObjView        @440\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @442\r
+                           location    (2208, 2176)\r
+                           line_color  3342489\r
+                           InterObjView        @440\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @443\r
+                           location    (2208, 2288)\r
+                           line_color  3342489\r
+                           InterObjView        @440\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @444\r
+                           location    (2208, 2400)\r
+                           line_color  3342489\r
+                           InterObjView        @440\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterMessView "" @445\r
+                       location        (16, 1984)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @446\r
+                           Parent_View         @445\r
+                           location    (1063, 1940)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE228B03BA"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   1478\r
+                           justify     0\r
+                           label       "createWarpper() // Invoked by a WebWrapperRule (not Directly by the Digester)"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @379\r
+                       supplier        @399\r
+                       Focus_Src       @383\r
+                       Focus_Entry     @405\r
+                       origin          (191, 1984)\r
+                       terminus        (1936, 1984)\r
+                       ordinal         17)\r
+                   (object InterMessView "" @447\r
+                       location        (16, 2016)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @448\r
+                           Parent_View         @447\r
+                           location    (2079, 1972)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE229A0004"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   82\r
+                           justify     0\r
+                           label       "new"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @440\r
+                       Focus_Src       @405\r
+                       Focus_Entry     @441\r
+                       origin          (1967, 2016)\r
+                       terminus        (2192, 2016)\r
+                       ordinal         18)\r
+                   (object InterMessView "" @449\r
+                       location        (16, 2176)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @450\r
+                           Parent_View         @449\r
+                           location    (2116, 2134)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE22A700C1"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   405\r
+                           justify     0\r
+                           label       "addInstanceListener()"\r
+                           pctDist     0.662295\r
+                           height      43\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @440\r
+                       Focus_Src       @404\r
+                       Focus_Entry     @442\r
+                       origin          (1967, 2176)\r
+                       terminus        (2192, 2176)\r
+                       ordinal         19)\r
+                   (object InterMessView "" @451\r
+                       location        (2496, 2288)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @452\r
+                           Parent_View         @451\r
+                           location    (2116, 2245)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE22C701CC"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   410\r
+                           justify     0\r
+                           label       "addLifecycleListener()"\r
+                           pctDist     0.662295\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @440\r
+                       Focus_Src       @404\r
+                       Focus_Entry     @443\r
+                       origin          (1967, 2288)\r
+                       terminus        (2192, 2288)\r
+                       ordinal         20)\r
+                   (object InterMessView "" @453\r
+                       location        (16, 2400)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @454\r
+                           Parent_View         @453\r
+                           location    (2124, 2357)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE22E80364"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   428\r
+                           justify     0\r
+                           label       "addContainerListener()"\r
+                           pctDist     0.701639\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @399\r
+                       supplier        @440\r
+                       Focus_Src       @404\r
+                       Focus_Entry     @444\r
+                       origin          (1967, 2400)\r
+                       terminus        (2192, 2400)\r
+                       ordinal         21)\r
+                   (object NoteView @455\r
+                       location        (1216, 80)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @455\r
+                           location    (825, 14)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   746\r
+                           label       "Deploy App.")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           806\r
+                       height          144)\r
+                   (object NoteView @456\r
+                       location        (2144, 2704)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @456\r
+                           location    (1953, 2641)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   347\r
+                           label       "#4 Catalina.start()")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           407\r
+                       height          138)))\r
+           (object InteractionDiagram "1. catalina_request"\r
+               mechanism_ref   @88\r
+               quid            "3DFE3B5001C3"\r
+               title           "1. catalina_request"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "ThreadPool" @457\r
+                       location        (176, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @457\r
+                           location    (176, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "ThreadPool")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE402B02C5"\r
+                       width           300\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @458\r
+                           location    (176, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @457\r
+                           height      304\r
+                           y_coord     244\r
+                           Nested      FALSE))\r
+                   (object InterObjView "TcpWorkerThread" @459\r
+                       location        (512, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @459\r
+                           location    (512, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   332\r
+                           justify     0\r
+                           label       "TcpWorkerThread")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE403200F8"\r
+                       width           350\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @460\r
+                           location    (512, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @459\r
+                           height      244\r
+                           y_coord     184\r
+                           Nested      FALSE))\r
+                   (object InterObjView "Http11Protocol" @461\r
+                       location        (848, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @461\r
+                           location    (848, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "Http11Protocol")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE40750177"\r
+                       width           300\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @462\r
+                           location    (848, 400)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      168\r
+                           y_coord     108\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @463\r
+                           location    (848, 448)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @464\r
+                           location    (848, 592)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      120\r
+                           y_coord     60\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @465\r
+                           location    (848, 592)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @466\r
+                           location    (848, 736)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      674\r
+                           y_coord     614\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @467\r
+                           location    (848, 736)\r
+                           line_color  3342489\r
+                           InterObjView        @461\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "CoyoteAdapter" @468\r
+                       location        (1168, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @468\r
+                           location    (1168, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "CoyoteAdapter")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE410600DF"\r
+                       width           300\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @469\r
+                           location    (1168, 848)\r
+                           line_color  3342489\r
+                           InterObjView        @468\r
+                           height      502\r
+                           y_coord     442\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @470\r
+                           location    (1168, 944)\r
+                           line_color  3342489\r
+                           InterObjView        @468\r
+                           height      352\r
+                           y_coord     292\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @471\r
+                           location    (1168, 944)\r
+                           line_color  3342489\r
+                           InterObjView        @468\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardEngine" @472\r
+                       location        (1520, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @472\r
+                           location    (1520, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   363\r
+                           justify     0\r
+                           label       "StandardEngine")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE424B0349"\r
+                       width           381\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @473\r
+                           location    (1520, 1008)\r
+                           line_color  3342489\r
+                           InterObjView        @472\r
+                           height      228\r
+                           y_coord     168\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardPipeline" @474\r
+                       location        (1872, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @474\r
+                           location    (1872, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardPipeline")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE42900045"\r
+                       width           300\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @475\r
+                           location    (1872, 1040)\r
+                           line_color  3342489\r
+                           InterObjView        @474\r
+                           height      136\r
+                           y_coord     76\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardValveContext" @476\r
+                       location        (2192, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @476\r
+                           location    (2192, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardValveContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE42C002B1"\r
+                       width           300\r
+                       height          1276\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @477\r
+                           location    (2192, 1056)\r
+                           line_color  3342489\r
+                           InterObjView        @476\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterMessView "" @478\r
+                       location        (16, 384)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @479\r
+                           Parent_View         @478\r
+                           location    (343, 340)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE40E701AE"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   112\r
+                           justify     0\r
+                           label       "runIt()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @457\r
+                       supplier        @459\r
+                       Focus_Src       @458\r
+                       Focus_Entry     @460\r
+                       origin          (191, 384)\r
+                       terminus        (496, 384)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @480\r
+                       location        (16, 400)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @481\r
+                           Parent_View         @480\r
+                           location    (679, 356)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE40FC010E"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   359\r
+                           justify     0\r
+                           label       "processConnection"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @459\r
+                       supplier        @461\r
+                       Focus_Src       @460\r
+                       Focus_Entry     @462\r
+                       origin          (527, 400)\r
+                       terminus        (832, 400)\r
+                       ordinal         1)\r
+                   (object SelfMessView "" @482\r
+                       location        (16, 448)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @483\r
+                           Parent_View         @482\r
+                           location    (969, 405)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4111029F"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   175\r
+                           justify     0\r
+                           label       "process()"\r
+                           pctDist     0.706667\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @461\r
+                       supplier        @461\r
+                       Focus_Src       @462\r
+                       Focus_Entry     @463\r
+                       origin          (864, 448)\r
+                       terminus        (1014, 448)\r
+                       ordinal         2)\r
+                   (object SelfMessView "" @484\r
+                       location        (16, 592)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @485\r
+                           Parent_View         @484\r
+                           location    (1048, 549)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE415C0151"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   291\r
+                           justify     0\r
+                           label       "parseHeaders()"\r
+                           pctDist     1.226667\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @461\r
+                       supplier        @461\r
+                       Focus_Src       @464\r
+                       Focus_Entry     @465\r
+                       origin          (864, 592)\r
+                       terminus        (1014, 592)\r
+                       ordinal         3)\r
+                   (object SelfMessView "" @486\r
+                       location        (16, 736)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @487\r
+                           Parent_View         @486\r
+                           location    (1052, 692)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE41A60161"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   328\r
+                           justify     0\r
+                           label       "prepareRequest()"\r
+                           pctDist     1.253333\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @461\r
+                       supplier        @461\r
+                       Focus_Src       @466\r
+                       Focus_Entry     @467\r
+                       origin          (864, 736)\r
+                       terminus        (1014, 736)\r
+                       ordinal         4)\r
+                   (object InterMessView "" @488\r
+                       location        (992, 848)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @489\r
+                           Parent_View         @488\r
+                           location    (1007, 804)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE41D60107"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   162\r
+                           justify     0\r
+                           label       "service()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @461\r
+                       supplier        @468\r
+                       Focus_Src       @466\r
+                       Focus_Entry     @469\r
+                       origin          (863, 848)\r
+                       terminus        (1152, 848)\r
+                       ordinal         5)\r
+                   (object SelfMessView "" @490\r
+                       location        (16, 944)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @491\r
+                           Parent_View         @490\r
+                           location    (1372, 916)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE422C01F1"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   373\r
+                           justify     0\r
+                           label       "postParseRequest()"\r
+                           pctDist     1.253333\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @468\r
+                       supplier        @468\r
+                       Focus_Src       @470\r
+                       Focus_Entry     @471\r
+                       origin          (1184, 944)\r
+                       terminus        (1334, 944)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @492\r
+                       location        (1344, 1008)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @493\r
+                           Parent_View         @492\r
+                           location    (1343, 964)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE42800238"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   149\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @468\r
+                       supplier        @472\r
+                       Focus_Src       @470\r
+                       Focus_Entry     @473\r
+                       origin          (1183, 1008)\r
+                       terminus        (1504, 1008)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @494\r
+                       location        (16, 1040)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @495\r
+                           Parent_View         @494\r
+                           location    (1695, 996)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE429A002D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   149\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @472\r
+                       supplier        @474\r
+                       Focus_Src       @473\r
+                       Focus_Entry     @475\r
+                       origin          (1535, 1040)\r
+                       terminus        (1856, 1040)\r
+                       ordinal         8)\r
+                   (object InterMessView "" @496\r
+                       location        (16, 1056)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @497\r
+                           Parent_View         @496\r
+                           location    (2031, 1012)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE42CE0230"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   149\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @474\r
+                       supplier        @476\r
+                       Focus_Src       @475\r
+                       Focus_Entry     @477\r
+                       origin          (1887, 1056)\r
+                       terminus        (2176, 1056)\r
+                       ordinal         9)\r
+                   (object NoteView @498\r
+                       location        (2000, 2016)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @498\r
+                           location    (1862, 1956)\r
+                           fill_color  13434879\r
+                           nlines      2\r
+                           max_width   240\r
+                           label       "See next diagram")\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       width           300\r
+                       height          132)\r
+                   (object AttachView "" @499\r
+                       stereotype      TRUE\r
+                       line_color      3342489\r
+                       client          @498\r
+                       supplier        @476\r
+                       line_style      0)))\r
+           (object InteractionDiagram "2. catalina_request_2"\r
+               mechanism_ref   @89\r
+               quid            "3DFE42F7024C"\r
+               title           "2. catalina_request_2"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "StandardContextValve" @500\r
+                       location        (224, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @500\r
+                           location    (224, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   401\r
+                           justify     0\r
+                           label       "StandardContextValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE4307001E"\r
+                       width           419\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @501\r
+                           location    (224, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @500\r
+                           height      386\r
+                           y_coord     326\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @502\r
+                           location    (224, 704)\r
+                           line_color  3342489\r
+                           InterObjView        @500\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @503\r
+                           location    (224, 896)\r
+                           line_color  3342489\r
+                           InterObjView        @500\r
+                           height      916\r
+                           y_coord     856\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @504\r
+                           location    (224, 1024)\r
+                           line_color  3342489\r
+                           InterObjView        @500\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @505\r
+                           location    (224, 1280)\r
+                           line_color  3342489\r
+                           InterObjView        @500\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardEngineValve" @506\r
+                       location        (592, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @506\r
+                           location    (592, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardEngineValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE432801F3"\r
+                       width           300\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @507\r
+                           location    (592, 384)\r
+                           line_color  3342489\r
+                           InterObjView        @506\r
+                           height      264\r
+                           y_coord     204\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardHost" @508\r
+                       location        (912, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @508\r
+                           location    (912, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardHost")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE436503BD"\r
+                       width           300\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @509\r
+                           location    (912, 416)\r
+                           line_color  3342489\r
+                           InterObjView        @508\r
+                           height      431\r
+                           y_coord     371\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @510\r
+                           location    (912, 528)\r
+                           line_color  3342489\r
+                           InterObjView        @508\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @511\r
+                           location    (912, 704)\r
+                           line_color  3342489\r
+                           InterObjView        @508\r
+                           height      120\r
+                           y_coord     60\r
+                           Nested      TRUE))\r
+                   (object InterObjView "ErrorReportValve" @512\r
+                       location        (1264, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @512\r
+                           location    (1264, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   294\r
+                           justify     0\r
+                           label       "ErrorReportValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE438C028D"\r
+                       width           312\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @513\r
+                           location    (1264, 896)\r
+                           line_color  3342489\r
+                           InterObjView        @512\r
+                           height      248\r
+                           y_coord     188\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @514\r
+                           location    (1264, 944)\r
+                           line_color  3342489\r
+                           InterObjView        @512\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "ErrorDispatcherValve" @515\r
+                       location        (1584, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @515\r
+                           location    (1584, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   295\r
+                           justify     0\r
+                           label       "ErrorDispatcherValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE451F01EC"\r
+                       width           313\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @516\r
+                           location    (1584, 1168)\r
+                           line_color  3342489\r
+                           InterObjView        @515\r
+                           height      232\r
+                           y_coord     172\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardHostValve" @517\r
+                       location        (1904, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @517\r
+                           location    (1904, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   295\r
+                           justify     0\r
+                           label       "StandardHostValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE47310130"\r
+                       width           313\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @518\r
+                           location    (1904, 1472)\r
+                           line_color  3342489\r
+                           InterObjView        @517\r
+                           height      280\r
+                           y_coord     220\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @519\r
+                           location    (1904, 1536)\r
+                           line_color  3342489\r
+                           InterObjView        @517\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardContext" @520\r
+                       location        (2224, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @520\r
+                           location    (2224, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE47C100F1"\r
+                       width           300\r
+                       height          1678\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @521\r
+                           location    (2224, 1632)\r
+                           line_color  3342489\r
+                           InterObjView        @520\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object InterMessView "" @522\r
+                       location        (16, 384)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @523\r
+                           Parent_View         @522\r
+                           location    (407, 340)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE434C019B"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @500\r
+                       supplier        @506\r
+                       Focus_Src       @501\r
+                       Focus_Entry     @507\r
+                       origin          (239, 384)\r
+                       terminus        (576, 384)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @524\r
+                       location        (16, 416)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @525\r
+                           Parent_View         @524\r
+                           location    (751, 372)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE436C009D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   107\r
+                           justify     0\r
+                           label       "map()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @506\r
+                       supplier        @508\r
+                       Focus_Src       @507\r
+                       Focus_Entry     @509\r
+                       origin          (607, 416)\r
+                       terminus        (896, 416)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @526\r
+                       location        (800, 528)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @527\r
+                           Parent_View         @526\r
+                           location    (751, 484)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE43830063"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @506\r
+                       supplier        @508\r
+                       Focus_Src       @507\r
+                       Focus_Entry     @510\r
+                       origin          (607, 528)\r
+                       terminus        (896, 528)\r
+                       ordinal         2)\r
+                   (object InterMessView "" @528\r
+                       location        (608, 704)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @529\r
+                           Parent_View         @528\r
+                           location    (568, 660)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE43B903BF"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @508\r
+                       supplier        @500\r
+                       Focus_Src       @511\r
+                       Focus_Entry     @502\r
+                       origin          (896, 704)\r
+                       terminus        (240, 704)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @530\r
+                       location        (752, 896)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @531\r
+                           Parent_View         @530\r
+                           location    (743, 852)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE43C203A4"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @500\r
+                       supplier        @512\r
+                       Focus_Src       @503\r
+                       Focus_Entry     @513\r
+                       origin          (239, 896)\r
+                       terminus        (1248, 896)\r
+                       ordinal         4)\r
+                   (object SelfMessView "" @532\r
+                       location        (16, 944)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @533\r
+                           Parent_View         @532\r
+                           location    (1355, 900)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE442501B1"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   135\r
+                           justify     0\r
+                           label       "report()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @512\r
+                       supplier        @512\r
+                       Focus_Src       @513\r
+                       Focus_Entry     @514\r
+                       origin          (1280, 944)\r
+                       terminus        (1430, 944)\r
+                       ordinal         5)\r
+                   (object InterMessView "" @534\r
+                       location        (16, 1024)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @535\r
+                           Parent_View         @534\r
+                           location    (744, 980)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE46330293"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   230\r
+                           justify     0\r
+                           label       "invokeNext()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @512\r
+                       supplier        @500\r
+                       Focus_Src       @513\r
+                       Focus_Entry     @504\r
+                       origin          (1248, 1024)\r
+                       terminus        (240, 1024)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @536\r
+                       location        (944, 1168)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @537\r
+                           Parent_View         @536\r
+                           location    (903, 1124)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE46E70026"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @500\r
+                       supplier        @515\r
+                       Focus_Src       @503\r
+                       Focus_Entry     @516\r
+                       origin          (239, 1168)\r
+                       terminus        (1568, 1168)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @538\r
+                       location        (16, 1280)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @539\r
+                           Parent_View         @538\r
+                           location    (904, 1236)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE475D03A0"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   206\r
+                           justify     0\r
+                           label       "invokeNext"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @515\r
+                       supplier        @500\r
+                       Focus_Src       @516\r
+                       Focus_Entry     @505\r
+                       origin          (1568, 1280)\r
+                       terminus        (240, 1280)\r
+                       ordinal         8)\r
+                   (object InterMessView "" @540\r
+                       location        (1184, 1472)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @541\r
+                           Parent_View         @540\r
+                           location    (1063, 1428)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE476503CA"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @500\r
+                       supplier        @517\r
+                       Focus_Src       @503\r
+                       Focus_Entry     @518\r
+                       origin          (239, 1472)\r
+                       terminus        (1888, 1472)\r
+                       ordinal         9)\r
+                   (object SelfMessView "" @542\r
+                       location        (16, 1536)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @543\r
+                           Parent_View         @542\r
+                           location    (1995, 1492)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE47CD0167"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   295\r
+                           justify     0\r
+                           label       "map() //Context"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @517\r
+                       supplier        @517\r
+                       Focus_Src       @518\r
+                       Focus_Entry     @519\r
+                       origin          (1920, 1536)\r
+                       terminus        (2070, 1536)\r
+                       ordinal         10)\r
+                   (object InterMessView "" @544\r
+                       location        (16, 1632)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @545\r
+                           Parent_View         @544\r
+                           location    (2063, 1588)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE47D500B4"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   146\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @517\r
+                       supplier        @520\r
+                       Focus_Src       @518\r
+                       Focus_Entry     @521\r
+                       origin          (1919, 1632)\r
+                       terminus        (2208, 1632)\r
+                       ordinal         11)))\r
+           (object InteractionDiagram "3. catalina_request_3"\r
+               mechanism_ref   @90\r
+               quid            "3DFE48A202AD"\r
+               title           "3. catalina_request_3"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        612\r
+               origin_y        938\r
+               items           (list diagram_item_list\r
+                   (object InterObjView "StandardContext" @546\r
+                       location        (160, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @546\r
+                           location    (160, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE48B001D1"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @547\r
+                           location    (160, 400)\r
+                           line_color  3342489\r
+                           InterObjView        @546\r
+                           height      1960\r
+                           y_coord     1900\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardPipeline" @548\r
+                       location        (480, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @548\r
+                           location    (480, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardPipeline")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE48B80088"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @549\r
+                           location    (480, 400)\r
+                           line_color  3342489\r
+                           InterObjView        @548\r
+                           height      1900\r
+                           y_coord     1840\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @550\r
+                           location    (480, 1088)\r
+                           line_color  3342489\r
+                           InterObjView        @548\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardValveContext" @551\r
+                       location        (800, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @551\r
+                           location    (800, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardValveContext")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE48D000DC"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @552\r
+                           location    (800, 736)\r
+                           line_color  3342489\r
+                           InterObjView        @551\r
+                           height      1510\r
+                           y_coord     1450\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @553\r
+                           location    (800, 1168)\r
+                           line_color  3342489\r
+                           InterObjView        @551\r
+                           height      1072\r
+                           y_coord     1012\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardContextValve" @554\r
+                       location        (1104, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @554\r
+                           location    (1104, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardContextValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE490303A7"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @555\r
+                           location    (1104, 800)\r
+                           line_color  3342489\r
+                           InterObjView        @554\r
+                           height      468\r
+                           y_coord     408\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @556\r
+                           location    (1104, 848)\r
+                           line_color  3342489\r
+                           InterObjView        @554\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "StandardWrapper" @557\r
+                       location        (1424, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @557\r
+                           location    (1424, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   288\r
+                           justify     0\r
+                           label       "StandardWrapper")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE49370351"\r
+                       width           306\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @558\r
+                           location    (1424, 944)\r
+                           line_color  3342489\r
+                           InterObjView        @557\r
+                           height      264\r
+                           y_coord     204\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @559\r
+                           location    (1424, 1520)\r
+                           line_color  3342489\r
+                           InterObjView        @557\r
+                           height      340\r
+                           y_coord     280\r
+                           Nested      FALSE))\r
+                   (object InterObjView "StandardWrapperValve" @560\r
+                       location        (1744, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @560\r
+                           location    (1744, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "StandardWrapperValve")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE49890056"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @561\r
+                           location    (1744, 1440)\r
+                           line_color  3342489\r
+                           InterObjView        @560\r
+                           height      740\r
+                           y_coord     680\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @562\r
+                           location    (1744, 1616)\r
+                           line_color  3342489\r
+                           InterObjView        @560\r
+                           height      184\r
+                           y_coord     124\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @563\r
+                           location    (1744, 2000)\r
+                           line_color  3342489\r
+                           InterObjView        @560\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterObjView "ApplicationFilterChain" @564\r
+                       location        (2064, 224)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @564\r
+                           location    (2064, 224)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "ApplicationFilterChain")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE4A1500B2"\r
+                       width           300\r
+                       height          2226\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @565\r
+                           location    (2064, 1680)\r
+                           line_color  3342489\r
+                           InterObjView        @564\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @566\r
+                           location    (2064, 1808)\r
+                           line_color  3342489\r
+                           InterObjView        @564\r
+                           height      312\r
+                           y_coord     252\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @567\r
+                           location    (2064, 1872)\r
+                           line_color  3342489\r
+                           InterObjView        @564\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      TRUE))\r
+                   (object InterMessView "" @568\r
+                       location        (336, 400)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @569\r
+                           Parent_View         @568\r
+                           location    (319, 356)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE48BE0268"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @546\r
+                       supplier        @548\r
+                       Focus_Src       @547\r
+                       Focus_Entry     @549\r
+                       origin          (175, 400)\r
+                       terminus        (464, 400)\r
+                       ordinal         0)\r
+                   (object InterMessView "" @570\r
+                       location        (16, 736)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @571\r
+                           Parent_View         @570\r
+                           location    (639, 692)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE48EA003A"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @548\r
+                       supplier        @551\r
+                       Focus_Src       @549\r
+                       Focus_Entry     @552\r
+                       origin          (495, 736)\r
+                       terminus        (784, 736)\r
+                       ordinal         1)\r
+                   (object InterMessView "" @572\r
+                       location        (16, 800)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @573\r
+                           Parent_View         @572\r
+                           location    (951, 756)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE491102D6"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @551\r
+                       supplier        @554\r
+                       Focus_Src       @552\r
+                       Focus_Entry     @555\r
+                       origin          (815, 800)\r
+                       terminus        (1088, 800)\r
+                       ordinal         2)\r
+                   (object SelfMessView "" @574\r
+                       location        (16, 848)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @575\r
+                           Parent_View         @574\r
+                           location    (1322, 821)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE492F033D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   437\r
+                           justify     0\r
+                           label       "map //return Wrapper"\r
+                           pctDist     1.346667\r
+                           height      28\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @554\r
+                       supplier        @554\r
+                       Focus_Src       @555\r
+                       Focus_Entry     @556\r
+                       origin          (1120, 848)\r
+                       terminus        (1270, 848)\r
+                       ordinal         3)\r
+                   (object InterMessView "" @576\r
+                       location        (1264, 944)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @577\r
+                           Parent_View         @576\r
+                           location    (1262, 901)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE494A0151"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.498270\r
+                           height      44\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @554\r
+                       supplier        @557\r
+                       Focus_Src       @555\r
+                       Focus_Entry     @558\r
+                       origin          (1119, 944)\r
+                       terminus        (1408, 944)\r
+                       ordinal         4)\r
+                   (object InterMessView "" @578\r
+                       location        (960, 1088)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @579\r
+                           Parent_View         @578\r
+                           location    (952, 1044)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE495F0288"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @557\r
+                       supplier        @548\r
+                       Focus_Src       @558\r
+                       Focus_Entry     @550\r
+                       origin          (1408, 1088)\r
+                       terminus        (496, 1088)\r
+                       ordinal         5)\r
+                   (object InterMessView "" @580\r
+                       location        (16, 1168)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @581\r
+                           Parent_View         @580\r
+                           location    (639, 1124)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4976015D"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @548\r
+                       supplier        @551\r
+                       Focus_Src       @549\r
+                       Focus_Entry     @553\r
+                       origin          (495, 1168)\r
+                       terminus        (784, 1168)\r
+                       ordinal         6)\r
+                   (object InterMessView "" @582\r
+                       location        (1296, 1440)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @583\r
+                           Parent_View         @582\r
+                           location    (1271, 1396)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4993023C"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   147\r
+                           justify     0\r
+                           label       "invoke()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @551\r
+                       supplier        @560\r
+                       Focus_Src       @553\r
+                       Focus_Entry     @561\r
+                       origin          (815, 1440)\r
+                       terminus        (1728, 1440)\r
+                       ordinal         7)\r
+                   (object InterMessView "" @584\r
+                       location        (1616, 1520)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @585\r
+                           Parent_View         @584\r
+                           location    (1584, 1476)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE49EC004F"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   175\r
+                           justify     0\r
+                           label       "allocate()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @560\r
+                       supplier        @557\r
+                       Focus_Src       @561\r
+                       Focus_Entry     @559\r
+                       origin          (1728, 1520)\r
+                       terminus        (1440, 1520)\r
+                       ordinal         8)\r
+                   (object InterMessView "" @586\r
+                       location        (1616, 1616)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @587\r
+                           Parent_View         @586\r
+                           location    (1583, 1572)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4A200067"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   242\r
+                           justify     0\r
+                           label       "return servlet"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @557\r
+                       supplier        @560\r
+                       Focus_Src       @559\r
+                       Focus_Entry     @562\r
+                       origin          (1439, 1616)\r
+                       terminus        (1728, 1616)\r
+                       ordinal         9)\r
+                   (object InterMessView "" @588\r
+                       location        (1936, 1680)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @589\r
+                           Parent_View         @588\r
+                           location    (1937, 1636)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4A29027E"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   343\r
+                           justify     0\r
+                           label       "createFilterChain()"\r
+                           pctDist     0.619377\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @560\r
+                       supplier        @564\r
+                       Focus_Src       @562\r
+                       Focus_Entry     @565\r
+                       origin          (1759, 1680)\r
+                       terminus        (2048, 1680)\r
+                       ordinal         10)\r
+                   (object InterMessView "" @590\r
+                       location        (16, 1808)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @591\r
+                           Parent_View         @590\r
+                           location    (1902, 1764)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4A490283"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   170\r
+                           justify     0\r
+                           label       "doFilter()"\r
+                           pctDist     0.498270\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @560\r
+                       supplier        @564\r
+                       Focus_Src       @561\r
+                       Focus_Entry     @566\r
+                       origin          (1759, 1808)\r
+                       terminus        (2048, 1808)\r
+                       ordinal         11)\r
+                   (object InterObjView "$UNNAMED$0" @592\r
+                       location        (2240, 368)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   TRUE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object ItemLabel\r
+                           Parent_View         @592\r
+                           location    (2240, 368)\r
+                           fill_color  13434879\r
+                           anchor_loc  1\r
+                           nlines      2\r
+                           max_width   282\r
+                           justify     0\r
+                           label       "")\r
+                       stereotype      (object ItemLabel\r
+                           Parent_View         @592\r
+                           location    (2240, 368)\r
+                           fill_color  13434879\r
+                           anchor      10\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   222\r
+                           justify     0\r
+                           label       "<<Servlet>>")\r
+                       icon_style      "Icon"\r
+                       line_color      3342489\r
+                       fill_color      13434879\r
+                       quidu           "3DFE4BAE0056"\r
+                       width           300\r
+                       height          2082\r
+                       icon_height     0\r
+                       icon_width      0\r
+                       icon_y_offset   0\r
+                       annotation      1\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @593\r
+                           location    (2240, 428)\r
+                           InterObjView        @592\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE)\r
+                       Focus_Of_Control        (object Focus_Of_Control "" @594\r
+                           location    (2240, 1984)\r
+                           line_color  3342489\r
+                           InterObjView        @592\r
+                           height      60\r
+                           y_coord     0\r
+                           Nested      FALSE))\r
+                   (object SelfMessView "" @595\r
+                       location        (16, 1872)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @596\r
+                           Parent_View         @595\r
+                           location    (2155, 1828)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4C2701C3"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   308\r
+                           justify     0\r
+                           label       "internalDoFilter()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @564\r
+                       supplier        @564\r
+                       Focus_Src       @566\r
+                       Focus_Entry     @567\r
+                       origin          (2080, 1872)\r
+                       terminus        (2230, 1872)\r
+                       ordinal         12)\r
+                   (object InterMessView "" @597\r
+                       location        (2144, 1984)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @598\r
+                           Parent_View         @597\r
+                           location    (2151, 1940)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4CA502BF"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   162\r
+                           justify     0\r
+                           label       "service()"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         0)\r
+                       line_color      3342489\r
+                       client          @564\r
+                       supplier        @592\r
+                       Focus_Src       @566\r
+                       Focus_Entry     @594\r
+                       origin          (2079, 1984)\r
+                       terminus        (2224, 1984)\r
+                       ordinal         13)\r
+                   (object InterMessView "" @599\r
+                       location        (16, 2000)\r
+                       font            (object Font\r
+                           size        10\r
+                           face        "Arial"\r
+                           bold        FALSE\r
+                           italics     FALSE\r
+                           underline   FALSE\r
+                           strike      FALSE\r
+                           color       0\r
+                           default_color       TRUE)\r
+                       label           (object SegLabel @600\r
+                           Parent_View         @599\r
+                           location    (1904, 1956)\r
+                           font        (object Font\r
+                               size            10\r
+                               face            "Arial"\r
+                               bold            FALSE\r
+                               italics         FALSE\r
+                               underline       FALSE\r
+                               strike          FALSE\r
+                               color           0\r
+                               default_color   TRUE)\r
+                           quidu       "3DFE4CB4025B"\r
+                           anchor_loc  1\r
+                           nlines      1\r
+                           max_width   113\r
+                           justify     0\r
+                           label       "return"\r
+                           pctDist     0.500000\r
+                           height      45\r
+                           orientation         1)\r
+                       line_color      3342489\r
+                       client          @564\r
+                       supplier        @560\r
+                       Focus_Src       @566\r
+                       Focus_Entry     @563\r
+                       origin          (2048, 2000)\r
+                       terminus        (1760, 2000)\r
+                       ordinal         14)))))\r
+    root_subsystem     (object SubSystem "Component View"\r
+       quid            "3DFDF6CE036A"\r
+       physical_models         (list unit_reference_list)\r
+       physical_presentations  (list unit_reference_list\r
+           (object Module_Diagram "Main"\r
+               quid            "3DFDF6D201FD"\r
+               title           "Main"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list))))\r
+    process_structure  (object Processes\r
+       quid            "3DFDF6CE0373"\r
+       ProcsNDevs      (list\r
+           (object Process_Diagram "Deployment View"\r
+               quid            "3DFDF6CE0387"\r
+               title           "Deployment View"\r
+               zoom            100\r
+               max_height      28350\r
+               max_width       21600\r
+               origin_x        0\r
+               origin_y        0\r
+               items           (list diagram_item_list))))\r
+    properties         (object Properties\r
+       attributes      (list Attribute_Set\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "propertyId"\r
+               value           "809135966")\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Project"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "project"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ViewCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DomainCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SPPackageCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TriggerCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IndexCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ConstraintCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "StoreProcedureCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "PrimaryKeyCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ForeignKeyCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "JoinCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableSpaceCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "cONTAINERCounter"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TablePrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ViewPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DomainPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TriggerPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IndexPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ConstraintPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "StoreProcedurePrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "PrimaryKeyPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ForeignKeyPrefix"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableSpacePrefix"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Module-Spec"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDatabase"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TargetDatabase"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Location"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsTableSpace"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableSpaceType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDeault"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "BufferPool"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ExtentSize"\r
+                       value           1)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "PrefetchSize"\r
+                       value           1)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "PageSize"\r
+                       value           4)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ManagedBy"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ContainerList"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Category"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmSchema"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmDomainPackage"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsSchema"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDomainPackage"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsRootSchema"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsRootDomainPackage"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsSchemaPackage"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DatabaseID"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DBMS"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Class"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsTable"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsView"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDomain"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsSPPackage"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Synonymns"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableSpaceID"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceId"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "CorrelationName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SelectClause"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsUpdateable"\r
+                       value           TRUE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "CheckOption"\r
+                       value           "None")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsSnapShot"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDistinct"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "PersistToServer"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsPackage"\r
+                       value           FALSE)))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Attribute"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Ordinal"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsIdentity"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsUnique"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "NullsAllowed"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Length"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Scale"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ColumnType"\r
+                       value           "Native")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ForBitData"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValueType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValue"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceId"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "OID"\r
+                       value           FALSE)))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Association"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsRelationship"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceId"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "SourceType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "RIMethod"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ParentUpdateRule"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ParentUpdateRuleName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ParentDeleteRule"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ParentDeleteRuleName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ChildInsertRestrict"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ChildInsertRestrictName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ChildMultiplicity"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ChildMultiplicityName"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Role"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ConstraintName"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Operation"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsConstraint"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ConstraintType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsIndex"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsTrigger"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsStoredProcedure"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsCluster"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TableSpace"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "FillFactor"\r
+                       value           0)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "KeyList"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "CheckPredicate"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsUnique"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DeferalMode"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "InitialCheckTime"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "TriggerType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsInsertEvent"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsUpdateEvent"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDeleteEvent"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "RefOldTable"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "RefNewTable"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "RefOldRow"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "RefNewRow"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsRow"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "WhenClause"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Language"\r
+                       value           "SQL")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ProcType"\r
+                       value           "Procedure")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsDeterministic"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ParameterStyle"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ReturnedNull"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ExternalName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Length"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Scale"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ForBitData"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValue"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValueType"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "default__Parameter"\r
+               value           (list Attribute_Set\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "dmItem"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DMName"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsInParameter"\r
+                       value           TRUE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "IsOutParameter"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Ordinal"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Length"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "Scale"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "ForBitData"\r
+                       value           FALSE)\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValueType"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "DefaultValue"\r
+                       value           "")\r
+                   (object Attribute\r
+                       tool            "Data Modeler"\r
+                       name            "OperationID"\r
+                       value           "")))\r
+           (object Attribute\r
+               tool            "Data Modeler"\r
+               name            "HiddenTool"\r
+               value           FALSE)\r
+           (object Attribute\r
+               tool            "Data Modeler Communicator"\r
+               name            "HiddenTool"\r
+               value           FALSE)\r
+           (object Attribute\r
+               tool            "Deploy"\r
+               name            "HiddenTool"\r
+               value           FALSE)\r
+           (object Attribute\r
+               tool            "Rose Model Integrator"\r
+               name            "HiddenTool"\r
+               value           FALSE)\r
+           (object Attribute\r
+               tool            "Rose Web Publisher"\r
+               name            "HiddenTool"\r
+               value           FALSE)\r
+           (object Attribute\r
+               tool            "Web Modeler"\r
+               name            "HiddenTool"\r
+               value           FALSE))\r
+       quid            "3DFDF6CE0374"))\r
diff --git a/webapps/docs/architecture/startup.xml b/webapps/docs/architecture/startup.xml
new file mode 100644 (file)
index 0000000..69a7741
--- /dev/null
@@ -0,0 +1,57 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="startup.html">
+
+  &project;
+
+  <properties>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Startup</title>
+  </properties>
+
+<body>
+
+
+<section name="Server Startup">
+
+<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>
+
+<subsection name="description">
+<p>
+A text description of the startup procedure is available
+<a href="startup/serverStartup.txt">here.</a>
+</p>
+</subsection>
+
+<subsection name="diagram">
+<p>
+A UML sequence diagram of the startup procedure is available
+<a href="startup/serverStartup.pdf">here.</a>
+</p>
+</subsection>
+
+<subsection name="comments">
+<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>
+
+</subsection>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/architecture/startup/serverStartup.pdf b/webapps/docs/architecture/startup/serverStartup.pdf
new file mode 100644 (file)
index 0000000..34aa598
Binary files /dev/null and b/webapps/docs/architecture/startup/serverStartup.pdf differ
diff --git a/webapps/docs/architecture/startup/serverStartup.txt b/webapps/docs/architecture/startup/serverStartup.txt
new file mode 100644 (file)
index 0000000..6120b0a
--- /dev/null
@@ -0,0 +1,136 @@
+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 intialize 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 retrives 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 invokation 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) Invokation of the servlet class
+                
+                
+                
+           
+               
+               
+               
+           
+                       
+                       
+               
+               
+                       
\ No newline at end of file
diff --git a/webapps/docs/balancer-howto.xml b/webapps/docs/balancer-howto.xml
new file mode 100644 (file)
index 0000000..88d33a9
--- /dev/null
@@ -0,0 +1,148 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="balancer-howto.html">
+
+    &project; 
+
+    <properties>
+        <author email="yoavs@apache.org">Yoav Shapira</author>
+        <author>Remy Maucherat</author>
+        <author>Andy Oliver</author>
+        <title>Load Balancer HOW-TO</title>
+    </properties>
+
+<body>
+
+<section name="Table of Contents">
+<p>
+<a href="#Using the JK 1.2.x native connector">
+Using the JK native connector</a><br />
+<a href="#Using Apache HTTP Server 2.x with mod_proxy">
+Using Apache HTTP Server 2.x and mod_proxy</a><br />
+<a href="#Using the balancer webapp">Using the balancer webapp</a><br />
+</p>
+</section>
+
+<section name="Using the JK 1.2.x native connector">
+
+Please refer to the JK 1.2.x documentation.
+
+</section>
+
+<section name="Using Apache HTTP Server 2.x with mod_proxy">
+
+Please refer to the mod_proxy documentation for Apache HTTP Server 2.2. This supports either
+HTTP or AJP load balancing. This new version of mod_proxy is also useable with
+Apache HTTP Server 2.0, but mod_proxy will have to be compiled separately using the code
+from Apache HTTP Server 2.2.
+
+</section>
+
+<section name="Using the balancer webapp">
+
+<subsection name="Overview">
+
+<p>
+Tomcat 5.0.15 and later ships with a webapp named balancer.  This is
+a simple implemention of a rules-based load balancer.  It was not designed
+as a replacement for other load-balancing mechanisms used for high traffic
+environments.  Rather, it is a simple, pure Java, easily extensible, and fast
+way to direct traffic among multiple servers.
+</p>
+<p>
+Although balancer ships with Tomcat, it is not Tomcat-specific and runs
+on other containers without any modification.  The balancer webapp 
+requires a Servlet Specification 2.3 or later container if you wish 
+to use a filter to redirect traffic.  If you wish to redirect traffic
+using a servlet, you may use any servlet container.
+</p>
+</subsection>
+
+<subsection name="Sample Configuration">
+<p>
+The default balancer installation uses a single filter, BalancerFilter,
+mapped to all requests (url-pattern /*).  The filter reads its rules
+from the location specified in the balancer deployment descriptor
+(web.xml file).  The default rules are:
+<ul>
+  <li>Redirect requests with News in the URL to www.cnn.com</li>
+  <li>Redirect requests with a parameter named paramName whose
+value is paramValue to www.yahoo.com.</li>
+  <li>Redirect all other requests to jakarta.apache.org.</li>
+</ul>
+
+Therefore, when you install tomcat, start it, and point your
+browser to http://localhost:8080/balancer, you will be redirected
+to http://jakarta.apache.org.  If you point your browser to
+http://localhost:8080/balancer/News you will be redirected to
+http://www.cnn.com.  The request for 
+http://localhost:8080/balancer/BlahBlah?paramName=paramValue will
+be redirected to http://www.yahoo.com.
+</p>
+</subsection>
+
+<subsection name="Balancer Rules">
+<p>
+A <i>Rule</i> in the balancer system is a combination of
+a request matching criterion and a redirection URL for
+matching requests.  Rules implement the
+org.apache.webapp.balancer.Rule interface.
+</p>
+
+<p>
+The balancer distribution contains a number of useful
+rules.  The framework is also designed for easy extensibility
+so that you can write your own rules quickly.  Rules
+should be JavaBeans (public no-args constructor, public
+setter method setXXX for property xxx), as they are
+instantiated by Jakarta Commons Digester.  Feel free
+to inquire on the tomcat-user mailing list regarding
+the availability of rules or the inclusion of your rules
+in the distribution.
+</p>
+
+<p>
+Rules are assembled into RuleChains.  Each BalancerFilter
+(or Servlet/JSP) refers to one RuleChain when making its
+redirection decisions.  Note that you are not restricted
+to having one filter mapped to /* as done in the sample
+configuration.  You can configure as many filters as
+desired, using the full filter mapping possibilities defined
+in the Servlet Specification.  Each filter will have
+its own RuleChain.
+</p>
+</subsection>
+
+<subsection name="How it Works">
+<p>
+<ol>
+  <li>You write a rules configuration file containing various
+rules and redirection locations.</li>
+  <li>You define the balancer filter in your web.xml, mapping
+it as desired (/* is a common use-case) and configuring it
+with your rules configuration file.</li>
+  <li>The server is started, initializing the filter.</li>
+  <li>A request comes into the server.  The filter consults
+its rule chain to determine where to redirect the request.  Rules
+are consulted in the order in which they are defined in the rules
+configuration file.  The first matching rule will stop the
+evaluation and cause the request to be redirected.</li>
+</ol>
+</p>
+
+</subsection>
+
+<subsection name="Comments">
+<p>
+Please direct questions, comments, suggestions, etc. to the
+tomcat-user mailing list.  Thank you.
+</p>
+</subsection>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/build.xml b/webapps/docs/build.xml
new file mode 100644 (file)
index 0000000..1fae53e
--- /dev/null
@@ -0,0 +1,240 @@
+<project name="tomcat-docs" default="build-main" basedir=".">
+
+
+  <!-- ===================== Initialize Property Values =================== -->
+
+  <!-- See "build.properties.sample" in the top level directory for all     -->
+  <!-- property values you must customize for successful building!!!        -->
+  <property file="build.properties"/>
+  <property file="../build.properties"/>
+  <property file="../../build.properties"/>
+  <property file="${user.home}/build.properties"/>
+
+  <property name="build.compiler"  value="modern"/>
+  <property name="webapps.build"   value="../build"/>
+  <property name="webapps.dist"    value="../dist"/>
+  <property name="webapp.name"     value="tomcat-docs"/>
+
+
+  <!-- =================== BUILD: Create Directories ====================== -->
+  <target name="build-prepare">
+    <mkdir dir="${webapps.build}"/>
+    <mkdir dir="${webapps.build}/${webapp.name}"/>
+  </target>
+
+
+  <!-- ================ BUILD: Copy Static Files ========================== -->
+  <target name="build-static" depends="build-prepare">
+
+    <!-- Top Level Static Files -->
+    <copy    todir="${webapps.build}/${webapp.name}">
+      <fileset dir="../..">
+        <include name="BUILDING.txt"/>
+        <include name="README.txt"/>
+        <include name="RUNNING.txt"/>
+      </fileset>
+    </copy>
+    <copy    todir="${webapps.build}/${webapp.name}">
+      <fileset dir="." includes="**/*.html"/>
+    </copy>
+
+    <!-- WEB-INF Static Files -->
+    <copy    todir="${webapps.build}/${webapp.name}/WEB-INF">
+      <fileset dir="WEB-INF"/>
+    </copy>
+
+    <!-- Application Developer's Guide Examples -->
+    <copy    todir="${webapps.build}/${webapp.name}/appdev">
+      <fileset dir="appdev" includes="*.txt"/>
+    </copy>
+
+    <!-- This copy includes a binary file (sample.war) so it should not have a filter token -->
+    <!-- See Bugzilla 36318: http://issues.apache.org/bugzilla/show_bug.cgi?id=36318 -->
+    <copy    todir="${webapps.build}/${webapp.name}/appdev/sample">
+      <fileset dir="appdev/sample"/>
+    </copy>
+
+    <copy   tofile="${webapps.build}/${webapp.name}/appdev/sample/build.xml"
+              file="appdev/build.xml.txt"/>
+
+    <!-- Catalina Functional Specifications -->
+    <mkdir     dir="${webapps.build}/${webapp.name}/catalina/funcspecs"/>
+
+    <!-- Architecture -->
+    <copy    todir="${webapps.build}/${webapp.name}/architecture">
+      <fileset dir="architecture" excludes="*.xml"/>
+    </copy>
+
+    <!-- Images Subdirectory -->
+    <mkdir     dir="${webapps.build}/${webapp.name}/images"/>
+    <copy    todir="${webapps.build}/${webapp.name}/images">
+      <fileset dir="images"/>
+    </copy>
+
+    <mkdir     dir="${webapps.build}/${webapp.name}/printer"/>
+    <!-- Top Level Static Files -->
+    <copy    todir="${webapps.build}/${webapp.name}/printer">
+      <fileset dir="../..">
+        <include name="BUILDING.txt"/>
+        <include name="README.txt"/>
+        <include name="RUNNING.txt"/>
+      </fileset>
+    </copy>
+    <style basedir="."
+           destdir="${webapps.build}/${webapp.name}/printer"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="build.xml project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="./.."/>
+      <param name="project-menu" expression="nomenu"/>
+    </style>
+
+    <!-- WEB-INF Subdirectory -->
+    <mkdir     dir="${webapps.build}/${webapp.name}/WEB-INF"/>
+    <copy    todir="${webapps.build}/${webapp.name}/WEB-INF">
+      <fileset dir="WEB-INF"/>
+    </copy>
+
+  </target>
+
+
+  <!-- ================= BUILD: XML-HTML Generation ======================= -->
+  <target name="build-main" depends="build-static">
+
+    <!-- Top Level Directory -->
+    <style basedir="."
+           destdir="${webapps.build}/${webapp.name}"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="build.xml project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="."/>
+    </style>
+
+    <!-- Application Developer's Guide -->
+    <style basedir="appdev"
+           destdir="${webapps.build}/${webapp.name}/appdev"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression=".."/>
+    </style>
+    <mkdir     dir="${webapps.build}/${webapp.name}/appdev/printer"/>
+    <!-- Application Developer's Guide Examples -->
+    <copy    todir="${webapps.build}/${webapp.name}/appdev/printer">
+      <fileset dir="appdev" includes="*.txt"/>
+    </copy>
+    <style basedir="appdev"
+           destdir="${webapps.build}/${webapp.name}/appdev/printer"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="../.."/>
+      <param name="project-menu" expression="nomenu"/>
+    </style>
+
+    <!-- Catalina Functional Specifications -->
+    <mkdir     dir="${webapps.build}/${webapp.name}/catalina"/>
+    <mkdir     dir="${webapps.build}/${webapp.name}/catalina/funcspecs"/>
+    <style basedir="funcspecs"
+           destdir="${webapps.build}/${webapp.name}/catalina/funcspecs"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="../.."/>
+    </style>
+    <mkdir     dir="${webapps.build}/${webapp.name}/catalina/funcspecs/printer"/>
+    <style basedir="funcspecs"
+           destdir="${webapps.build}/${webapp.name}/catalina/funcspecs/printer"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="../../.."/>
+      <param name="project-menu" expression="nomenu"/>
+    </style>
+
+    <!-- Server Configuration Reference -->
+    <style basedir="config"
+           destdir="${webapps.build}/${webapp.name}/config"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression=".."/>
+    </style>
+    <mkdir     dir="${webapps.build}/${webapp.name}/config/printer"/>
+    <style basedir="config"
+           destdir="${webapps.build}/${webapp.name}/config/printer"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="../.."/>
+      <param name="project-menu" expression="nomenu"/>
+    </style>
+
+    <!-- Server Architecture -->
+    <style basedir="architecture"
+           destdir="${webapps.build}/${webapp.name}/architecture"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression=".."/>
+    </style>
+    <mkdir     dir="${webapps.build}/${webapp.name}/architecture/printer"/>
+    <style basedir="architecture"
+           destdir="${webapps.build}/${webapp.name}/architecture/printer"
+         extension=".html"
+             style="tomcat-docs.xsl"
+          excludes="project.xml"
+          includes="*.xml">
+      <param name="relative-path" expression="../.."/>
+      <param name="project-menu" expression="nomenu"/>
+    </style>
+
+  </target>
+
+
+  <!-- ==================== BUILD: Rebuild Everything ===================== -->
+  <target name="all" depends="build-clean,build-main"
+   description="Clean and build documentation webapp"/>
+
+
+  <!-- ======================= BUILD: Clean Directory ===================== -->
+  <target name="build-clean">
+    <delete dir="${webapps.build}/${webapp.name}"/>
+  </target>
+
+
+  <!-- ======================= DIST: Create Directories =================== -->
+  <target name="dist-prepare">
+    <mkdir dir="${webapps.dist}"/>
+  </target>
+
+
+  <!-- ======================= DIST: Create Distribution Files ============ -->
+  <target name="dist" depends="build-main,dist-prepare"
+   description="Create documentation webapp binary distribution">
+      <jar   jarfile="${webapps.dist}/${webapp.name}.war"
+             basedir="${webapps.build}/${webapp.name}" includes="**"/>
+  </target>
+
+
+  <!-- ======================= DIST: Clean Directory ====================== -->
+  <target name="dist-clean">
+    <delete dir="${webapps.dist}/${webapp.name}"/>
+  </target>
+
+
+  <!-- ====================== Convenient Synonyms ========================= -->
+  <target name="clean" depends="build-clean,dist-clean"
+   description="Clean build and dist directories"/>
+
+
+</project>
diff --git a/webapps/docs/building.xml b/webapps/docs/building.xml
new file mode 100644 (file)
index 0000000..c260884
--- /dev/null
@@ -0,0 +1,231 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document>
+
+    &project;
+
+    <properties>
+      <author>Remy Maucherat</author>
+      <title>Building Tomcat</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+<p>
+Building Tomcat from SVN is very easy, and is the first step to contributing to
+Tomcat. The following is a step by step TODO list.
+</p>
+
+</section>
+
+<section name="Download and install a Java Development Kit 1.4.x or later">
+
+<p>
+The default distribution of Tomcat 5.5.x requires a 5.0 or later JDK. Tomcat
+can be built using a 1.4.x JDK but you will need to copy the contents of the
+compat directory (created by the build process) to your build directory before
+Tomcat will start.
+</p>
+
+<p>
+The Sun JDK can be downloaded <a href="http://java.sun.com/j2se/">here</a>.
+</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>
+
+</section>
+
+<section name="Install Apache Ant 1.6.2 or later">
+
+<p>
+Download a binary distribution of Ant 1.6.2 or later from 
+<a href="http://ant.apache.org/bindownload.cgi">here</a>.
+</p>
+
+<p>
+Unpack the binary distribution into a convenient location so that the
+Ant release resides in its own directory (conventionally named
+"apache-ant-1.6.x").  For the purposes of the remainder of this document,
+the symbolic name "${ant.home}" is used to refer to the full pathname of
+ the release directory.
+</p>
+
+<p>
+Create an ANT_HOME environment variable to point the directory ${ant.home}, 
+and modify the PATH environment variable to include directory
+"${ant.home}/bin" in its list.  This makes the "ant" command line script
+available, which will be used to actually perform the build.
+</p>
+
+</section>
+
+<section name="Building Tomcat">
+
+<p>
+Download the main build.xml script from <a href="build.xml">here</a>.
+</p>
+
+<p>
+Create a new directory, and copy the newly download build.xml to it. This
+  directory will be referred to as the ${tomcat.source} directory in the rest
+  of this document.
+</p>
+
+<p>
+Go to that directory, and do:
+<code><br/>
+    cd ${tomcat.source}<br/>
+    ant<br/>
+</code>
+</p>
+
+<p>
+NOTE: Users accessing the Internet through a proxy must use a properties
+  file to indicate to Ant the proxy configuration. Read below.
+</p>
+
+<p>
+WARNING: Running this command will checkout the Tomcat 5 sources from SVN, as
+  well as download binaries to the <code>/usr/share/java</code> directory. 
+  Make sure this is appropriate to do so on your computer. On Windows, 
+  this usually corresponds to the <code>C:\usr\share\java</code> directory, 
+  unless Cygwin is used. Read below to customize the directory used 
+  to download the binaries.
+</p>
+
+<p>
+The build can be controlled by creating a ${tomcat.source}/build.properties
+  file, and adding the following content to it:
+<code><br/>
+    # ----- Proxy setup -----<br/>
+    # Uncomment if using a proxy server.<br/>
+    #proxy.host=proxy.domain<br/>
+    #proxy.port=8080<br/>
+    #proxy.use=on<br/>
+<br/>
+    # ----- Default Base Path for Dependent Packages -----<br/>
+    # Replace this path with the directory path where<br/>
+    # dependencies binaries should be downloaded.<br/>
+    base.path=/usr/share/java<br/>
+</code>
+</p>
+
+</section>
+
+<section name="Updating and rebuilding Tomcat sources">
+
+<p>
+It is recommended to regularly update the downloaded Tomcat 5 sources. 
+To do this, execute the following commands:
+
+<code><br/>
+    cd ${tomcat.source}<br/>
+    ant checkout<br/>
+</code>
+</p>
+
+<p>
+For a quick rebuild of only modified code you can use:
+<code><br/>
+    cd ${tomcat.source}<br/>
+    ant build<br/>
+</code>
+
+</p>
+
+</section>
+
+<section name="Building with Eclipse">
+
+<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>
+Note that you <b>must</b> complete all the above steps to fetch
+the repositories and build some JAR files the first time.
+After you have completed the above steps, you can set up a
+series of Eclipse 4 projects.
+<b>Note</b> that 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>
+Use Windows-&gt;Preferences and then Java-&gt;Build Path-&gt;Classpath
+Variables to add two new Classpath variables:
+</p>
+
+<p>
+<table border="1">
+ <tr><td>TOMCAT_LIBS_BASE</td><td>the base path where the binary dependencies have been downloaded</td></tr>
+ <tr><td>ANT_HOME</td><td>the base path of Ant 1.6.2 or later</td></tr>
+</table>
+</p>
+
+<p>
+Use File-&gt;New Project to create a new Java project 
+for each of the binaries repository (e.g., /usr/share/java), 
+container, connectors, jasper, servletapi. 
+Unless you thought ahead to make the ${tomcat.source} directory be under
+your Workspace folder, tell Eclipse the external location using &quot;Import/Export...&quot;,
+General-&gt;Existing Project into Workspace.
+</p>
+
+<p>
+Eclipse .project and .classpath files are provided in each of these
+directories so Eclipse should find all source trees and jars, and
+hopefully compile without problems. <b>Note</b> that these
+files assume you are using Eclipse with a 5.0 or later JDK; also, the
+connectors module must be built with a compiler compliance level of 5.0.
+</p>
+
+<p>
+To run Tomcat without a special IDE plug-in, you can simply use Run-&gt;Run...
+enter "org.apache.catalina.startup.Catalina" as the main class,
+"start" as program arguments, and
+"-Dcatalina.home=..." (with the name of your build directory) 
+as VM arguments.
+</p>
+
+<p>
+Note also that due to the way the Tomcat source is assembled
+from several SVN projects, you may not be able to use the Eclipse
+SVN client to update (nor to commit, if you are a committer).
+Use the external SVN client of your choice, then use the
+Eclipse PackageExplorer or Navigator "Refresh" context menu item
+to tell Eclipse that you've updated the files.
+</p>
+
+</section>
+
+<section name="Building with other IDEs">
+<p>
+The same caveats apply as for Eclipse, above.
+</p>
+
+<p>
+The same general idea should work in most IDEs; it has been reported
+to work in Idea, for example.
+</p>
+
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/cgi-howto.xml b/webapps/docs/cgi-howto.xml
new file mode 100644 (file)
index 0000000..6c720b3
--- /dev/null
@@ -0,0 +1,76 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="cgi-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="glenn@apache.org">Glenn L. Nielsen</author>
+        <title>CGI How To</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+<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>
+</section>
+
+<section name="Installation">
+
+<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>Rename <code>$CATALINA_BASE/server/lib/servlets-cgi.renametojar</code>
+to <code>$CATALINA_BASE/server/lib/servlets-cgi.jar</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>
+</section>
+
+<section name="Configuration">
+
+<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. Default is <code>perl</code>.</li>
+<li><strong>parameterEncoding</strong> - Name of the parameter encoding
+to be used with the GCI 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>
+</ul>
+</p>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/changelog.xml b/webapps/docs/changelog.xml
new file mode 100644 (file)
index 0000000..4a303ff
--- /dev/null
@@ -0,0 +1,2812 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="changelog.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Changelog</title>
+  </properties>
+
+<body>
+
+<section name="Tomcat 5.5.17 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Update to Xerces 2.8.0 (remm)
+      </update>
+      <update>
+        Update to tcnative 1.1.3 (remm)
+      </update>
+    </changelog>
+  </subsection>
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Fix SingleSignOn Valve and add Session.getLastAccessTimeInternal() without session invalidation test. (pero)
+      </fix>
+      <fix>
+        <bug>38814</bug>: CGIServlet correctly handles Shift_JIS output. (markt) 
+      </fix>
+      <fix>
+        Add missing REQUEST_URI environment variable to CGI environment. (markt)
+      </fix>
+      <fix>
+        <bug>27617</bug>: Sync existing mime types with httpd. (keith)
+      </fix>
+      <fix>
+        <bug>38761</bug>: Handle relative symlinks to shell scripts as suggested by Adam Murray (keith)
+      </fix>
+      <fix>
+        <bug>38795</bug>: Associate more closely bind with a finally unbind in StandardContext start and
+        stop, based on a patch by Darryl Miles (remm)
+      </fix>
+      <fix>
+        Improve undeployment robustness (remm)
+      </fix>
+      <update>
+        Expand the semaphore valve (remm)
+      </update>
+      <fix>
+        <bug>39021</bug>: Add back support for authentication only, submitted by Scott Stark (remm)
+      </fix>
+      <fix>
+        Revert fix for <bug>38113</bug>, which does not seem a legitimate problem, and causes
+        regressions (remm)
+      </fix>
+      <fix>
+        Correctly reset listeners when reloading a webapp (remm)
+      </fix>
+      <fix>
+        <bug>38194</bug>: Don't fail silently if -force is used without CATALINA_PID, submitted by Matthew Buckett. (yoavs)
+      </fix>
+      <fix>
+        <bug>38154</bug>: Avoid NPE in FileDirContext after webapp undeploy, reported by Jamie Maher. (yoavs)
+      </fix>
+      <fix>
+        <bug>38217</bug>: Added cautionary note about keystore password to SSL HowTo, as suggested by Ralf Hauser. (yoavs)
+      </fix>
+      <fix>
+        <bug>38262</bug>: Cleared ambiguity in host documentation, as suggested by Jeffrey Bennett. (yoavs)
+      </fix>
+      <fix>
+        <bug>38476</bug>: Modified check for null TLD stream, as suggested by Fabrizio Giustina. (yoavs)
+      </fix>
+      <fix>
+        <bug>38052</bug>: Use <i>userName</i> as userField default. User is at many databases a 
+        reserved keyword, as suggested by rik. (pero)
+      </fix>
+      <fix>
+        Fix handling of non matching if-range header (remm)
+      </fix>
+      <fix>
+        <bug>37848</bug>: Only output catalina.sh diagnostic messages if we have a TTY, submitted by
+          David Shaw. (yoavs)
+      </fix>
+      <fix>
+        <bug>38596</bug>: Minor performance optimization in DataSourceRealm, suggested by Sandy
+          McArthur. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Make the default cipher suites available for SSL the same as the set of cipher
+        suites enabled by default rather than the set of all cipher suites. This prevents
+        ciphers suites that do not provide confidentiality protection and/or server
+        authentication being used by default. (markt)
+      </fix>
+      <fix>
+        Move AprEndpoint.getWorkerThread inside the try/catch for the main accept loop, to guard
+        about an OOM (which would most likely doom the server anyway) (remm)
+      </fix>
+      <fix>
+        As exhibited in the ASF's JIRA installation, it seems EINTR is a status code that should
+        be ignored as a result to a poll call (remm)
+      </fix>
+      <update>
+        New APR connectors defaults (remm)
+      </update>
+      <update>
+        Add multiple threads for APR pollers, to work around Windows limitations (performance degrades
+        very rapidly if poller sizes over 1024 are allowed when compiling APR) (remm)
+      </update>
+      <update>
+        New modes for firstReadTimeout (-1 being the new default) (remm)
+      </update>
+      <update>
+        Replace java.util.Stack usage with a simple array in the APR endpoint (remm)
+      </update>
+      <fix>
+        tcnative jnilib.c now report correct compile flags for runtime 
+        Library.java checks like sendfile support default true/false (pero)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>38015</bug>: Remove misleading warnings logged in TagLibraryInfoImpl, as suggested by Andrew Houghton. (yoavs)
+      </fix>
+      <fix>
+        <bug>38376</bug>: Make sure body content stack is always properly aligned, as submitted by Tony Deigh. (yoavs)
+      </fix>
+      <fix>
+        Compatibility with JDT 3.2 (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        <bug>39292</bug>: Update catalina.policy at demo balancer app. Fix provided by Kerry Sainsbury (pero)
+      </fix>
+      <fix>
+        <bug>36847</bug>: Fixed the manager app copy function to not overwrite fileA with fileB when fileA==fileB.
+        Fix provided by Haroon Rafique (fhanik)
+      </fix>
+      <fix>
+        <bug>38508</bug>: Several enhancements to Host Manager application, including configurable
+          manager app support and dialog box enhancements.  Thanks to George Sexton for the patch. (yoavs)
+      </fix>
+      <fix>
+        <bug>37781</bug>: Make sure context config file is writeable, suggested by George Sexton. (yoavs,pero)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Cluster">
+    <changelog>
+       <update>
+        Add at PooledSocketSender the jmx attributes inPoolSize and inUsePoolSize. (pero)
+       </update>
+       <fix>
+         DeltaManager set session creationTime at backup node. (pero)
+       </fix>
+       <update>
+        Add JvmRouteBinderValve documentation at cluster-howto.xml. (pero)
+       </update>
+       <add>
+        JvmRouteBinderValve now supports now sessionid's from request and cookies.
+        Thanks to Brian Stansberry for reporting it. (pero)
+       </add>
+       <fix>
+       <bug>38779</bug> Fix wrong jmx message arg at SimpleTcpCluster
+          at o.a.c.cluster.tcp.mbeans-descriptors.xml, submitted by Pawel Tucholski (pero)
+      </fix>
+      <fix>
+        Fix that not after every "Keep Alive Socket close" a log warning is generated at TcpReplicationThread (pero)
+      </fix>
+      <fix>
+        <bug>39178</bug>: Now ROOT.war deployment with FarmWarDeployer is possible (pero)
+      </fix>
+      <fix>
+        ReplicationValve not set primarySession flag when all backup nodes gone (pero)
+      </fix>
+      <update>
+        Add DeltaSession.getLastAccessTimeInternal() without session invalidation test. (pero)
+      </update>
+    </changelog>
+  </subsection>
+ </section>
+
+<section name="Tomcat 5.5.16 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Updated / enhanced docs to remove old FIXME references. (yoavs)
+      </update>
+      <update>
+        Required tcnative library version upgraded to 1.1.2 (remm)
+      </update>
+      <update>
+        Update to Eclipse JDT 3.1.2 (remm)
+      </update>
+    </changelog>
+  </subsection>
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>23950</bug>: Context.listBindings() should return objects not
+        references. (markt)
+      </fix>
+      <fix>
+        <bug>38124</bug>: Add support for Windows 20xx when reading environment
+        variables in CGIServlet. (markt)
+      </fix>
+      <fix>
+        <bug>29214</bug>: response.containsHeader() now returns the correct
+        value for Content-Type and Content-Length headers. (markt)
+      </fix>
+      <fix>
+        Allow using a custom ContextConfig when using JMX embedding of Tomcat, as
+        is doen by the regular deployer. (remm)
+      </fix>
+      <add>
+        Add JMX serverInfo attribute to Server MBean, that we can identify
+        the tomcat release remotely. (pero)
+      </add>
+      <fix>
+        Fix the JMX MBeanFactory.createStandardHost signature at mbean-descriptors.xml (pero)
+      </fix>
+      <fix>
+        Fix some cases (for example with realm usage) where the container logger for a context
+        would be retrieved using the wrong classloader (remm)
+      </fix>
+      <fix>
+        HttpSession.getId will no longer throw an ISE when the session is invalid (remm)
+      </fix>
+      <fix>
+         ore detailed errors for naming issues (remm)
+      </fix>
+      <docs>
+        Add documentation for the Transaction element (remm)
+      </docs>
+      <update>
+        Add getContextPath to the internal servlet context implementation (remm)
+      </update>
+      <fix>
+        Only null instances loaded by the webapp CL, submitted by Matt Jensen (remm)
+      </fix>
+      <update>
+        Deploy folders which don't have a WEB-INF, and return an error when a context
+        file does not contain a Context element (remm)
+      </update>
+      <fix>
+        <bug>38653</bug>: Fix property name (remm)
+      </fix>
+      <fix>
+        Slightly modify the timing of the manager start, so that it is not started by a
+        listener (remm)
+      </fix>
+      <fix>
+        Refresh loggers used by the digester (remm)
+      </fix>
+      <fix>
+        Use sendError instead of setStatus to send the 401 code. (billbarker)
+      </fix>
+      <fix>
+        Don't append the port for an SSL redirect if it is the default port. (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Log errors when setting socket options with debug priority rather than error. (remm)
+      </fix>
+      <fix>
+        <bug>38100</bug>: Make certain that a valid Host name is set, or none at all. (billbarker)
+      </fix>
+      <fix>
+        <bug>38485</bug>: Fix minor regression setting connection timeout (as well as linger and
+        no delay) where the default value was always used when using the regular 
+        HTTP connector (remm)
+      </fix>
+      <update>
+        Pass along more of the SSL related fields to OpenSSL (remm)
+      </update>
+      <update>
+        CharChunk now implements CharSequence (remm)
+      </update>
+      <fix>
+        Fix coding error which could cause a rare crash when a poller error occurred and sockets
+        where pending being added to the keepalive poller (remm)
+      </fix>
+      <fix>
+        Fix potential sync issues when restarting a poller (remm)
+      </fix>
+      <fix>
+        Update APR error reports, including the error codes (remm)
+      </fix>
+      <fix>
+        <bug>38726</bug>: Remove duplicate request group field causing blank statistics for the
+        HTTP connector (remm) 
+      </fix>
+      <fix>
+        Fix invalid length used by some AJP packets for the AJP APR connector, which could cause 
+        corruption, submitted by Rudiger Plum (jim)
+      </fix>
+      <fix>
+        <bug>38346</bug>: Fix problems with request.getReader().readLine(). 
+        Patch by Rainer Jung (billbarker)
+      </fix>
+      <update>
+        Local address reuse for APR Endpoints (via APR_SO_REUSEADDR) now enabled (jim)
+     </update>
+      <fix>
+        Don't write out the shutdown secret file if shutdown is disabled (the default) (billbarker)
+      </fix>
+      <fix>
+        Fix NPE when no sink is supplied. (billbarker)
+      </fix>
+      <update>
+        APR Endpoints now IPv6 aware (jim)
+     </update>
+      <update>
+        Downgrade "Response already committed" logging entry to DEBUG. (billbarker)
+     </update>
+     <fix>
+       <bug>38113</bug>: Return the empty String for an empty query-string instead of null. (billbarker)
+     </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>38389</bug>: Set correct JDT Compiler option to java 1.5 compliance. 
+        Patch from Olivier Thomann and Paul Hamer (pero)
+      </fix>
+      <update>
+        Add some useful hints to jasper-howto. (pero).
+      </update>
+      <fix>
+        <bug>38776</bug>: Fix source file attribute, submitted by Olivier Thomann (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+        Update DeltaManager session access stats  (pero)
+      </fix>
+      <fix>
+        DeltaSession getId will no longer throw an ISE when the session is invalid (pero)
+      </fix>
+      <update>
+          Resurrected the &quot;suspect&quot; property so that the logs don't fill
+          up with errors when member disappears or a connection is lost. Only useful for pooled mode (fhanik)
+      </update>
+      <add>
+       <bug>35710</bug>: Add session replication for cross context session changes.
+       The portlet api need this support, see refactored ReplicationValve. (pero)
+      </add>
+      <update>
+        ReplicationValve reset DeltaSession when cluster node has no backup node. (pero)
+      </update>
+      <update>
+        DataSender close connection and throw exception also even if waitForAck is false.  (pero)
+      </update>
+      <fix>
+        Active cluster junit test again. (pero)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        Fix some XSS issues in the JSP examples. (markt)
+      </fix>
+      <fix>
+        Fix logos in the manager webapp (remm)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.15 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <fix>
+        <bug>32081</bug>: Remove the JDK requirement from the Win32 scripts. (keith)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+       <bug>37852</bug>: Fix regression where the magic role '*' was denying all access. Patch by xrcat (billbarker)
+      </fix>
+      <fix>
+       <bug>37934</bug>: Don't ask for authentication if deny-from-all is in effect. (billbarker)
+      </fix>
+      <fix>
+        <bug>15570</bug>: auth-constraint of * was interpretted as all
+        authenticated users rather than as all roles defined in web.xml. (markt)
+      </fix>
+      <fix>
+       Remove leftover static logger which was used to log application level messages in
+       ApplicationContextFacade (remm)
+      </fix>
+      <fix>
+        <bug>38012</bug>: Where a CGI script sets a response code, use it. (markt)
+      </fix>
+      <fix>
+        <bug>37854</bug>: Extension-List checking was too strict. (markt)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+       Report binding errors in the APR endpoint as strings rather than platform specific
+       status codes (remm)
+      </fix>
+      <fix>
+       <bug>37934</bug>: Don't ask for authentication if deny-from-all is in effect. (billbarker)
+      </fix>
+      <fix><bug>38047</bug>: Handle the case where the Servlet attempts to read
+              the Request body from the AJP/1.3 Connector, in the case that no
+              body was sent. (billbarker)
+      </fix>
+      <fix><bug>38030</bug>: Unconditionally return EOS for an attempt to read 
+              the body of any request that doesn't send CL or TE. 
+              (remm, billbarker).
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>35351</bug>: Fix problem using an inner class for a &lt;jsp:useBean /&gt;. (kinman).
+      </fix>
+      <fix>
+        <bug>37929</bug>: Don't stop on the generic attribute methods just because the session is invalid. Patch by Pierre Delisle. (billbarker)
+      </fix>
+      <update>
+        Add system properties org.apache.jasper.runtime.BodyContentImpl.LIMIT_BUFFER and
+        org.apache.jasper.runtime.JspFactoryImpl.USE_POOL to allow configuring Jasper
+        memory usage (remm)
+      </update>
+      <fix>
+        <bug>37933</bug>: Restrict &lt;jsp:getAttribute /&gt; to only look in PAGE_SCOPE. (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+       <bug>37808</bug>: Fix ArrayIndexOutOfBoundsException inside XByteBuffer. Reported by Dietmar Mueller (pero)
+      </fix>
+      <update>
+        <bug>37896</bug>DataSender starts new Socket after IOException. (pero)
+      </update>
+      <update>
+        Reduce memory usage at membership service. (pero)
+      </update>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.14 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Update optional native APR connector version to 1.1.1. (mturk)
+      </update>
+      <update>
+        Update build.properties.default to get native connector from new location. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>13040</bug>: Fix getContext() when used to obtain a context that is a sub-context
+        of the current context. Ported from TC4. (markt) 
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>37746</bug>: Remove extra space from StringTokenizer pattern in JspC, as suggested by
+        Eric Hedstrom. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+       <bug>36863</bug>: Strip quotes when parsing Cookie values, even for v0 Cookies. (billbarker)
+      </fix>
+      <fix>
+       <bug>37803</bug>: Don't claim that we have a string value in MessageBytes until we actually do. 
+           Patch by Doug Rand (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.13 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <fix>
+        <bug>36711</bug>: Unused line of code. (yoavs)
+      </fix>
+      <update>
+        Removed unused SAXPath, Jaxen dependencies. (yoavs)
+      </update>
+      <update>
+        Update log4j dependency to version 1.2.12, Struts to 1.2.7. (yoavs)
+      </update>
+      <update>
+        Removed JDBC 2.0 StdExt dependency (only class from there is javax.sql.XADataSource, which is
+        present in JDK 1.4 and later. (yoavs)
+      </update>
+      <fix>
+        <bug>37039</bug>: typo on JK Quick configuration how-to. (yoavs)
+      </fix>
+      <add>
+        <bug>37035</bug>: Add a placeholder file in the temp directory for WinZip tar.gz handling. (yoavs)
+      </add>
+      <update>
+        Update JAF dependency to 1.0.2, JTA to 1.0.1b and JavaMail to 1.3.3_01. (markt)
+      </update>
+      <add>
+        Added Eclipse .project, .classpath, and associated files to make building Tomcat from
+        Eclipse significantly easier. (markt)
+      </add>
+      <add> 
+        <bug>37284</bug>: Guess JSE 5.0 location on Mac OS X, patch by Stepan Koltsov. (yoavs)
+      </add>
+      <fix>
+        <bug></bug>: Wrong class name in antlib.xml for JkStatusUpdateTask. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>36802</bug>: Fix problem of double-init when JMX-deploying a 
+        Context into a started Host. (billbarker)
+      </fix>
+      <fix>
+        <bug>36840</bug>: Provide information as to which web.xml is being processed on startup to
+        help debug parsing errors. (yoavs)
+      </fix>
+      <add>
+        <bug>34724</bug>: Ability to set domain for Single-Sign-On cookie.  Patch by Oliver
+        Rossmueller. (yoavs)
+      </add>
+      <fix>
+        <bug>37044</bug>: RealmBase.hasResourcePermission needs to access the GenericPrincipal as
+        set by the realm unless hasRole is overriden, which was no longer being done properly for
+        the JAAS realm (remm)
+      </fix>
+      <fix>
+        <bug>37264</bug>: JNDI resources were no longer available when stopping listeners,
+        submitted by Bogdan Calmac (remm)
+      </fix>
+      <fix>
+        <bug>37150</bug>: Turn off directory listing by default and add a warning
+        regarding enabling listing of directories with many entries. (markt)
+      </fix>
+      <update>
+        Add configurability for the amount of time that the container will wait for requests
+        to complete when unloading servlets, using the unloadDelay property. (remm)
+      </update>
+      <update>
+        Add code to set to null fields in loaded classes when stopping a web application, as a
+        possible workaround for suspicious garbage collection behavior. (remm)
+      </update>
+      <update>
+        Update messages and stack traces for classloading errors which may occur when removing
+        a web application, and for stopped web applications. (remm)
+      </update>
+      <fix>
+        <bug>37319</bug>: Fix catalina.bat reference to CATALINA_BASE for logging.properties.  Thanks
+        to Pierre-Yves Benzaken. (yoavs)
+      </fix>
+      <fix>
+        <bug>36852</bug>: Custom classloaders don't honor Contet privileged attribute.  Thanks to
+        Matt Brinkley for the analysis and patch. (yoavs)
+      </fix>
+      <fix>Fix for a couple of (mostly silly) edge-cases in testing auth.
+           Thanks to Nam T. Nguyen for the report. (billbarker) 
+      </fix>
+      <fix>
+        <bug>37060</bug>: Actually copy the Request headers when replaying after Form auth. (billbarker)
+      </fix>
+      <fix>
+        <bug>37591</bug>: Typo in Engine configuration reference. (yoavs)
+      </fix>
+      <fix>
+        <bug>37668</bug>: Added note about JSP recompilation to Context configuration documentation. (yoavs)
+      </fix>
+      <fix>
+        <bug>37132</bug>: Have DigestAuthenticator Handle user names with commas.  Thanks to 
+          Robert Wille for the patch. (yoavs)
+      </fix>
+      <fix>
+        <bug>37212</bug>: Better error reporting in Connector.java.  Thanks to Ralf Hauser for
+        the patch. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Gracefully handle the case where some Socket options are disabled at 
+        the OS level for the AJP/1.3 Connector. (billbarker)
+      </fix>
+      <fix>
+        <bug>36366</bug>: Use rewritten deployer-howto page by Allistair Crossley. (remm)
+      </fix>
+      <add>
+        <bug>36630</bug>: Added extra log output for class instantiation failure. (yoavs)
+      </add>
+      <fix>
+        <bug>37121</bug>: Sendfile always needs to be given the length of data to write,
+        which fixes ranged requests. (remm)
+      </fix>
+      <fix>
+        Optimized direct byte buffers association with the socket for APR connectors. (mturk)
+      </fix>
+      <fix>
+        Fix hidden NPEs when using the APR connectors and there's no host header. (pero, remm)
+      </fix>
+      <fix>
+        Http11Protocol now register RequestProcessor at JMX and show current usage inside manager app. (pero)
+      </fix>
+      <add>
+        JkStatus Ant tasks for mod_jk 1.2.15. (pero)
+      </add>
+      <update>Connection Timeout is normal, so reduce logging to DEBUG (billbarker) 
+      </update>
+      <fix>
+        Fix crash which could occur with the HTTP APR connector when accessing request JMX objects
+        outside of the processing of the said request (remm)
+      </fix>
+      <fix>
+        <bug>37627</bug>: Fix buffering issue in the HTTP APR connector when a large buffer size was
+        used for servlets (remm)
+      </fix>
+      <fix>
+        <bug>37673</bug>: Fix implementation of getLocalPort and getLocalAddr in the HTTP APR connector
+        (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>35252</bug>: Jasper PageDataImpl outputs malformed XML.  Patch by Rahul Akolkar. (yoavs)
+      </fix>
+      <add>
+        <bug>37062</bug>: Helpful JSP exception message containing file, line numbers.  Patch by
+        Tim Fennell at http://www.tfenne.com/jasper/. (yoavs)
+      </add>
+      <fix>
+        <bug>37407</bug>: File descriptor leak in JspReader.  Thanks to Fred for the patch.  I also
+        did some minor cleanup in the class. (yoavs)
+      </fix>
+      <add>
+        <bug>37612</bug>: Add file location to JSP Validator error message.  Thanks to Renaud Bruyeron
+        for the patch. (yoavs)
+      </add>
+    </changelog>
+  </subsection>
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+        Fix that session replace messages are logged after node recovery get all session from master node. (pero)
+      </fix>
+      <fix>
+        <bug>37896</bug> Fix that sendMessage signature at all DataSender subclasses must be changed.
+        Now pooled and async modes working as expected. (pero)
+      </fix>
+      <fix>
+        Fix that socket at o.a.c.cluster.tcp.FastAsyncSocketSender can be disconnect/connect. (pero)
+      </fix>    
+      <fix>
+        Fix cluster module build.xml script for new svn repository structure (pero)
+      </fix>    
+      <fix>
+        Fix closed socket exceptions at normal server shutdown, reported by Olve Hansen (pero)
+      </fix>    
+      <fix>
+        Fix closed socket exceptions inside async message transfer modes (pero)
+      </fix>    
+      <fix>
+        <bug>34984</bug>: HttpSessionBindingEvent.getValue() get correct value (pero)
+      </fix>    
+      <fix>
+        <bug>35916</bug>: send sessionCreated to SessionListener after cluster node recovery (pero)
+      </fix>
+      <fix>
+        <bug>36541</bug>: Used also Hashtable at DeltaSession (pero)
+      </fix>
+      <fix>
+        Better support cluster at engine level. (pero)
+      </fix>
+      <fix>
+        <bug>36866</bug>: Correct attribute name in conf/server.xml documentation for Cluster element. (yoavs)
+      </fix>
+      <fix>
+        <bug>37261</bug>: Allow xerces to know where the web.xml file is so that relative entities can be resolved.
+      </fix>
+      <fix>
+        <bug>37529</bug>: Fixed race condition in ReplicationLister#stopListening.  Thanks to 
+        Chris Walker for the patch. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Webapps">
+    <changelog>
+      <fix>Remove obsolete TagPlugin file from JSP examples (billbarker)</fix>
+      <fix>
+        <bug>36019</bug>: Made clear the Host-Manager HowTo is coming soon, not ready yet. (yoavs)
+      </fix>
+      <fix>
+        <bug>36336</bug>: Check WAR extension in both upper and lower case, as suggested by
+        A. Grasoff. (yoavs)
+      </fix>
+      <fix>
+        <bug>35982</bug>: Can't delete mail sessions in admin webapp. (yoavs)
+      </fix>
+      <fix>
+        <bug>36673</bug>: Similar to the one above, for data sources. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.12 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <fix>
+        Remove uneeded files in conf. (remm)
+      </fix>
+      <update>
+        Change distribution file names from jakarta-* to apache-*. (remm)
+      </update>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Catalina">
+    <changelog>
+      <add>
+        Add JMX Remote create and unregister ant tasks (pero)
+      </add>
+      <fix>
+        <bug>36343</bug>: Only normalize out backslash on Windows platforms. (billbarker)
+      </fix>
+      <fix>
+        Allow configuring standard stream redirection. (remm)
+      </fix>
+      <add>
+        <bug>36088</bug>: Add RUNNING.txt and RELEASE-NOTES.txt to fulldocs distro. (yoavs)
+      </add>
+      <fix>
+        <bug>36534</bug>: fix equals for URLs returned by ServletContext.getResource() (luehe)
+      </fix>
+      <fix>
+        <bug>36558</bug>: Clear IntrospectionUtils cache when stopping a webapp, as it 
+        could leak to keeping a reference to the classloader (remm)
+      </fix>
+      <fix>
+        <bug>36113</bug>: Session persistence for objects with primitive types could fail in
+        some rare cases (remm)
+      </fix>
+      <fix>
+        <bug>36541</bug>: Full synchronization for session objects attributes collections (remm)
+      </fix>
+      <fix>
+        <bug>35609</bug>: service.bat echo command when wrong arguments given [patch by Robert
+        Longson] (yoavs)
+      </fix>
+      <fix>
+        <bug>34749</bug>: jsessionid dropped on trailing slash (/) redirect (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  
+   <subsection name="Coyote">
+     <changelog>
+       <update>
+         Add support for secret for AJP APR (remm)
+       </update>
+     </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        Fix NPE with an error message when no Java compiler is available (remm)
+      </fix>
+      <fix>
+        Restrict System err stream capture to the Ant compiler, as the Eclipse compiler
+        does not need it (remm)
+      </fix>
+      <update>
+        JSP compilation speed improvement using tag library information caching, 
+        submitted by Xingbo Gao (remm)
+      </update>
+      <add>
+        Initial contribution of JSTL tag plugins supporting the core tag library of
+        JSTL, submitted by Jing Li (remm)
+      </add>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+        <bug>36541</bug>: Sync all session attribute access (read and write) at DeltaSession (pero)
+      </fix>
+      <fix>
+        <bug>36518</bug>: Classname typos for senders, submitted by Christoph Bachhuber-Haller (remm)
+      </fix>
+      <add>
+        <bug>35613</bug>: Added FAQ question and answer about tcpListenAddress="auto" and /etc/hosts (yoavs)
+      </add>
+      <update>
+        Moved FAQ section for Clustering from Clustering HowTo page to its own FAQ page. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Webapps">
+    <changelog>
+      <docs>
+        <bug>36319</bug>: Fix broken link to DBCP docs, submitted by Xavier Poinsard (remm)
+      </docs>
+      <docs>
+        Brand new deployer specs, submitted by Allistair Crossley (remm)
+      </docs>
+    </changelog>
+  </subsection>
+ </section>
+
+<section name="Tomcat 5.5.11 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Update to Xerces 2.7.1 (remm)
+      </update>
+      <add>
+        Add ready to build bin/tomcat-native.tar.gz for the APR JNI wrapper library (remm)
+      </add>
+      <fix>
+        <bug>35930</bug>: Bad logging config used by the Tomcat Windows service (remm)
+      </fix>
+      <add>
+        <bug>33261</bug>: Windows installer now checks the user type and warns non-admins as needed. (yoavs)
+      </add>
+      <update>
+        The Windows installer will now optionally download a (32bit) Windows .dll for Tomcat native
+        from HEAnet (remm)
+      </update>
+      <fix>
+        Declaration of jspc Ant task to fix the deployer package (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Catalina">
+    <changelog>
+      <add>
+        Add concurrency control valve (o.a.c.valves.SemaphoreValve). As the Tomcat distribution 
+        is not built for Java 5, the valve will have to be compiled from the sources 
+        using Java 5 (remm)
+      </add>
+      <fix>
+        <bug>35880</bug>: Ignore JSSE15SocketFactory when generating JavaDoc, as it breaks
+          the JDK 1.4 JavaDoc tool. (yoavs)
+      </fix>
+      <fix>
+        <bug>35865</bug>: setclasspath.sh cannot be excutive under cygwin. (funkman)
+      </fix>
+      <fix>
+        <bug>33267</bug>: Set working path in service installer, as suggested by Dominik
+          Drzewiecki. (yoavs)
+      </fix>
+      <update>
+        <bug>34794</bug>: Update connector documentation to include clientAuth attribute. (yoavs)
+      </update>
+      <fix>
+        <bug>35894</bug>, <bug>36228</bug>: Fix CNFE when starting in a sandbox. (billbarker, remm)
+      </fix>
+      <fix>
+        Add version check for Tomcat native so that incompatible API changes are detected early (remm)
+      </fix>
+      <fix>
+        <bug>36020</bug>: Allow MemoryUserDatabase to work better on write protected mediums,
+        submitted by Rainer Jung (remm)
+      </fix>
+      <fix>
+        <bug>35978</bug>: Bad handling of single range requests greater than 2GB in the DefaultServlet
+        (remm)
+      </fix>
+      <fix>
+        <bug>35984</bug>: Client abort exceptions will now use getCause (remm)
+      </fix>
+      <fix>
+        Fix handling of non-file based includes with SSI, submitted by David Becker (markt)
+      </fix>
+    </changelog>
+  </subsection>
+  
+   <subsection name="Coyote">
+     <changelog>
+      <fix>
+        Fix default ports for http and https which are set in the request when the parsed
+        hostname does not specify the port, and which were inverted (https was set as 80 
+        and http as 443). (remm)
+      </fix>
+      <fix>
+        Add missing tomcatAuthentication attribute to the AJP APR implementation. (remm)
+      </fix>
+      <fix>
+        Check filename sendfile attribute only if sendfile is enabled. (remm)
+      </fix>
+      <fix>
+        Fix output buffering for APR AJP implementation. (remm)
+      </fix>
+      <fix>
+        <bug>35941</bug>: Fix getRemoteAddr for APR AJP implementation. (remm)
+      </fix>
+      <fix>
+        <bug>35942</bug>: Fix NPE retriving cipher suite attribute when no certificate 
+        was submitted (for example with no SSL). (remm)
+      </fix>
+      <fix>
+        Internationalization and code cleanups for APR AJP implementation. (remm)
+      </fix>
+      <fix>
+        Security exception in APR AJP implementation when running with the security
+        manager enabled. (remm)
+      </fix>
+      <fix>
+        <bug>36173</bug>: Add missing sync in FastHttpDateFormat.formatDate, submitted 
+        by Alexei Krainiouk (remm)
+      </fix>
+      <fix>
+        Disable HTTP compression when sendfile is used for a resource (remm)
+      </fix>
+      <fix>
+        AJP secret attribute report only at trace level. (pero)
+      </fix>
+     </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>36127</bug>: Validation compatibility with Xerces 2.7.1, submitted 
+        by Florent Benoit (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Cluster">
+    <changelog>        
+      <fix>
+        Fix NPE when cluster stops (pero)
+      </fix>
+      <fix>
+        <bug>36218</bug>: MemoryRealm now support also GenericPrincipal, but 
+        JAASRealm with cluster replication still has a problem, detected by Dirk Dekok (pero)
+      </fix>   
+     </changelog>
+  </subsection>
+  
+  <subsection name="Webapps">
+    <changelog>
+    </changelog>
+  </subsection>
+ </section>
+
+<section name="Tomcat 5.5.10 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <add>
+         Add JMX remote ant task to control tomcat MBeanserver via ant scripts.
+         Ant lib is included at "server/lib/catalina-ant-jmx.jar" and documentation
+         is added to <a href="monitoring.html">Monitoring and Managing Tomcat How-To</a> (pero)
+      </add>
+      <fix>
+        <bug>34361</bug>: Integrate better antlib and import support for 
+        catalina manager tasks [Modified patch from Daniel Santos]  (pero)
+      </fix>
+      <fix>
+        StoreConfig save now the Connector.sslProtocol attribute. (pero)
+      </fix>
+      <update>
+        Change log dir at service.bat to "$CATALINA_BASE/logs" for better multi instance support. (pero)
+      </update>
+      <update>
+        <bug>34237</bug>: Added note and links to context and host configuration
+          references in JNDI DataSources HowTo to aid the clueless. (yoavs)
+      </update>
+      <update>
+        <bug>34248</bug>: Update JavaMail download instructions to include JAF. (yoavs)
+      </update>
+      <update>
+        Update to JDT from Eclipse 3.1, with support for Java 5 (remm)
+      </update>
+      <update>
+        Refactoring, redesign and extend the cluster module
+          - Cluster can be configured as subelement from Engine and Host.
+          - Optimized performance and reduce memory usage
+          - Better JMX support
+          - add a lot of JMX stats attribute for better monitoring 
+          - add a single element default cluster configuration
+          - more config options
+             LifecycleListener
+             ClusterListener
+             more than one cluster valves
+          - better subclass support
+          - change a lot of existing cluster API's (pero)
+       </update>
+       <add>
+         Add Apache Portable Runtime JNI wrapper and helper API (mturk)
+       </add>
+       <update>
+         Update JULI to provide support for taking over java.util.logging bootstrap configuration,
+         and move the default properties file to ${catalina.base}/conf/logging.properties (remm)
+       </update>
+       <fix>
+         <bug>34746</bug>: Updated catalina.properties instructions per Bill Edwards' suggestion. (yoavs)
+       </fix>
+       <fix>
+         <bug>35090</bug>: Minor documentation typo fix. (yoavs)
+       </fix>
+       <fix>
+         <bug>34931</bug>: Rewrote ROOT/index.jsp to be XHTML strict compliant, per Richard
+           Beton's patch. (yoavs)
+       </fix>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>20380</bug>: Access log timestamps now take account of Daylight Saving
+        Time (DST). (markt)
+      </fix>
+      <add>
+        <bug>34220</bug>: Provide better error message when server.xml can't be located.
+          [Modified patch from Ralf Hauser] (yoavs)
+      </add>
+      <add>
+          Add MessageListener and LifecylceListener cluster saving to storeconfig module
+          (&lt;Cluster ... &gt;&lt;ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" &gt;) (pero)
+      </add>  
+      <fix>
+        <bug>33743</bug>: Add additional synchronization in webapp classloader to avoid
+        possible race condition when defining a class (remm)
+      </fix>
+      <fix>
+        <bug>33711</bug>: Add events on passivate and activate to cleanup SSO, and recycle
+        session objects when removing them from a manager (so that anyone keeping references
+        to it would leak a minimal amount of memory) (remm)
+      </fix>
+      <update>
+        Re-add patch causing Session.getId to throw an ISE, and make all internal components
+        use a safe getIdInternal method (remm)
+      </update>
+      <update>
+        Store principal to be exposed for Request.getUserPrincipal inside the GenericPrincipal,
+        to remove hacks from the JAAS realm (remm)
+      </update>
+      <fix>
+        <bug>10385</bug>: SSI Servlet now includes better support for files that use character
+        encodings other than the platform default.(markt)
+      </fix>
+      <fix>
+        Remove CopyParentClassLoader rule, which doesn't seem to be doing anything useful
+        anymore. (remm)
+      </fix>
+      <add>
+        Provide an ServletFilter implementation of Server Side Includes (SSI). This was
+        submitted by David Becker under <bug>33106</bug>. (markt)
+      </add>
+      <add>
+        Add sendfile support to default servlet, with a sendfileSize configuration attribute.
+        (remm)
+      </add>
+      <update>
+        If APR as well as Tomcat's JNI wrapper for APR are present, use APRized protocol handlers
+        instead of the regular ones (remm)
+      </update>
+      <fix>
+        <bug>22617</bug>: When used with an EJB container and a realm that supports the concept
+        of an unauthenticated user (J2EE.3.4.3) BASIC authentication was always authenticating
+        users as the unauthenticated user without giving them a chance to supply a username and
+        password. (markt)
+      </fix>
+      <fix>
+        Prevent facade objects cloning (remm)
+      </fix>
+      <update>
+        Add missing CGI variables to SSI servlet. Patch submitted by Fritz Schneider. (markt)
+      </update>
+      <fix>
+        <bug>34578</bug>: Updated JNDIRealm comment. (yoavs)
+      </fix>
+      <fix>
+        <bug>34273</bug>: Better Bootstrap warning message. [Path from Ralf Hauser] (yoavs)
+      </fix>
+      <update>
+        <bug>34675</bug>: Updated Proxy-HowTo page with Servlet API calls. (yoavs)
+      </update>
+      <fix>
+        <bug>34546</bug>: Fix problem where the "first" Valve couldn't be removed from a Pipeline. (billbarker)
+      </fix>
+      <fix>
+        Fix NPE when POST size exceeds limit defined by maxPostSize. (markt)
+      </fix>
+      <fix>
+        Fix FORM authentication so POSTed parameters are not assumed to be encoded with platform
+        default encoding. A side effect of this fix is that the bodies of POST requests that
+        require FORM authentication are now buffered and made available after a sucessful login. (markt)
+      </fix>
+      <fix>
+        <bug>34840</bug>: Better handling of external WARs redeployment, and ignore docBase specified
+        in context file if within the Host appBase (remm)
+      </fix>
+      <fix>
+        Fix handling of symbolic links when the DefaultServlet is generating directory
+        listings. (markt)
+      </fix>
+      <fix>
+        <bug>35769</bug>: Correct implementation of javax.naming.Context.composeName( Name, Name)
+        in multiple places. Patch provided by Laurent Simon. (markt)
+      </fix>
+      <add>
+        <bug>34805</bug>: Add warning for suspicious security patterns, as suggested by Ralf Hauser. (yoavs)
+      </add>
+      <fix>
+        <bug>35819</bug>: Use getWorkPath for deleting work directory on context destroy, as suggested
+          by Rob Steele. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  
+   <subsection name="Coyote">
+     <changelog>
+      <update>
+        Add support for using "Smart Cards" as trust/keyStore. (billbarker)
+      </update>
+      <update>
+        Add some Mbean attributes and operations to ChannelSocket (pero)
+      </update>    
+      <add>
+        Apache Portable Runtime based HTTP/1.1 protocol handler, with SSL support (remm)
+      </add>
+      <add>
+        Add support for simple file-based CRLs under JDK 1.5 (billbarker)
+      </add>
+      <add>
+        Add experimental NIO-Socket channel for the AJP/1.3 Connector (billbarker)
+      </add>
+      <add>
+        <bug>34648</bug>: Add configuration option to enable IP-based Virtual Hosts. (billbarker)
+      </add>
+      <update>
+        Refactor the AJP/1.3 Connector to be able to handle more advanced Actions. (billbarker)
+      </update>
+      <fix>
+        Fix connector initialisation so sslProtocol is not required for SSL. (markt)
+      </fix>
+      <add>
+        Add bufferSize option to the AJP/1.3 Java connector to control output buffering. (billbarker)
+      </add>
+      <add>
+        Apache Portable Runtime based AJP/1.3 protocol handler (remm)
+      </add>
+      <fix>
+        Delay reading the inital request body packet by default for the AJP/1.3 Java connector. (billbarker)
+      </fix>
+     </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>18477</bug>: Allow symbolic links when precompiling JSPs (markt)
+      </fix>
+      <add>
+        <bug>34727</bug>: Allow specifying the Option class used by the Jasper engine,
+        submitted by Scott Stark (remm)
+      </add>
+      <add>
+        Support for Java 5.0 in JSPs (remm)
+      </add>
+      <update>
+        Java 5 will be the source and target for JSPs when running on Java 5 (remm)
+      </update>
+      <update>
+        <bug>34652</bug>: Add the ability to get SMAPs when precompiling, submitted by
+        Daryl Robbins (remm)
+      </update>
+      <fix>
+        <bug>34465</bug>: Jspc failure if there is no web.xml (remm)
+      </fix>
+      <fix>
+        <bug>35696</bug>: Make certain that release is called for custom tags 
+         when tag-pooling is disabled. (billbarker)
+      </fix>
+      <fix>
+        <bug>35386</bug>: Make useBean resources use consistent spelling, from Kurt Huwig. (yoavs)
+      </fix>
+      <update>
+        <bug>33522</bug>: Update jasper-howto to reflect use of javac switch. (yoavs)
+      </update>
+      <add>
+        <bug>35114</bug>: Add failOnError flag to JspC, by ziweth. (yoavs)
+      </add>
+      <fix>
+        <bug>35410</bug>: Fixed NPE in JspWriterImpl. (yoavs)
+      </fix>
+      <add>
+        <bug>35571</bug>: JspC resolved uriRoot relative to Ant project basedir, if any, as suggested
+          by Jason Pettiss. (yoavs)
+      </add>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Cluster">
+    <changelog>        
+      <add>
+        Add that cluster can configure as Engine and Host element. (pero)
+      </add>      
+      <add>
+        Add single cluster default configuration element - discussed at JAX 2005 conference Cluster Workshop. (pero)
+      </add>      
+      <fix>
+        Fix resend GET_ALL_SESSIONS when wait ACK failed at receiver side (pero)
+      </fix>  
+      <fix>
+        ClusterValve now remove from container element when cluster stops and added with next start again. (pero)
+      </fix>     
+      <add>
+        Set timestamp only at first time inside SessionMessageImpl (pero)
+      </add>    
+      <add>
+       Set timestamp from findsessions method call, when handling GET_ALL_SESSION
+       to all SEND_SESSION_DATA and TRANSFER complete messages. (pero>
+      </add>
+      <add> 
+       Drop all received message inside GET_ALL_SESSION message queue before state 
+       transfer message timestamp. (pero)
+      </add>      
+      <add>
+        Cluster ping now transfer cluster domain information and DeltaManager only
+        send and receive message from same domain members (pero)
+      </add>      
+      <add>
+        JMX Support for McastService (Membership) (pero)
+      </add>      
+      <add>
+        Redesign SimpleTcpCluster message receiving to ClusterReceiverBase (pero)
+      </add>      
+      <add>
+        Cluster transfer all attributes to the generate session manager at addManager. 
+        Remove some unused attributes at SimpleTcpCluster and ReplicationTransmitter (pero)
+      </add>    
+      <update>
+        Refactor DeltaManager:
+          - createSession call now ManagerBase super class method
+          - extract some long methods
+          - send GET_ALL_SESSION with session blocks
+          - don't sync sessions map when send all sessions (pero)  
+      </update>          
+      <update>
+        Add developer actions at to-do.txt (Proposal of changes) (pero)  
+      </update>          
+      <update>
+        Small refactorings at FastAsyncSocketSender (pero)  
+      </update>          
+      <update>
+        Redesign cluster message sending to lesser cpu and memory usage. 
+        Set at ReplicationTransmitter#compress=false as default. Change API from
+        ClusterSender, ReplicaitonTransmitter, DataSender, SimpleTcpCluster (pero)  
+      </update>          
+      <add>
+        DeltaManager has now JMX expireAllLocalSessions and processExipre operation 
+        for better cluster node shutdown handling (usefull for testing only) (pero)   
+      </add>  
+      <add>
+        DataSender doWaitAckStats for better understanding wait ack problems (pero)   
+      </add>  
+      <update>
+        Refactor DeltaManager and add counter for cluster message send/receive message (pero)  
+      </update>          
+      <fix>
+        <bug>34389</bug>:Porting Clustering fix pack to 5.5.10 code base.
+        Remove synchonized from DataSender.pushMessage(). Very offen the 
+        complete cluster blocking after replicated a bulk of new session messages under heavy load.
+        All cluster node standing for a lot of time and made nothing. 
+        Fix it for pooled, asynchronous and fastasyncqueue replication mode. Very bad thing, sorry! (pero)  
+      </fix>
+      <add>
+        Add notifySessionListenersOnReplication attribute to SimpleTcpCluster to stop notify 
+        event to SessionListener at backup nodes from create and destroy replicated session (pero)
+      </add>
+      <add>
+        Add compress attribute to ClusterSender and ClusterReceiver interface. Now compress config
+        transfer from sender to receiver at SimpleTcpCluster. (pero) 
+      </add>    
+      <add>
+        Add ClusterValve interface and implement it as ReplicationValve and JvmRouteBinderValve. Now both
+        Valves can be directly configured at server.xml Host/Cluster/Valve subelements.
+        Also this configuration are correctly handled with the StoreConfig module. (pero)  
+      </add>    
+      <update>
+        Deactivate DataSender keepAliveMaxRequestCount change default to -1. 
+        Cluster replication sockets are fast and very stable! (pero)  
+      </update>          
+      <update>
+        Setup JvmRouteBinderValve as host valve instead context valve. Refactor the API a little bit. (pero)
+      </update>
+      <fix>
+        Don't increment open socket counter before socket is really open. Add socket open failures counter (pero) 
+      </fix>  
+      <add>
+        Add MessageListener support to cluster server.xml element (ClusterListener) to 
+        register your own cluster message receiver (pero)
+      </add>  
+      <add>
+        Add LifecycleListener support to cluster server.xml element (Listener)
+        and notify those listener from start/stop cluster,
+        add/remove session manager, sending fault and start/stop member  (pero)
+      </add>  
+      <add>
+        Add active backgroundProcess keepAlive timeout and request count socket close check
+        at ReplicationTransmitter.  Check frequency can be change with attribute 
+        processSenderFrequency (default 2). (pero)
+      </add>
+      <add>
+        Remove useless Jdk13ReplicationListener,Jdk13ObjectReader. 
+        Add SocketReplicationListener and SocketObjectReader to have nativ socket ClusterReceiver. 
+        Also extract ClusterReceiverBase superclass for SocketReplicationListener and ReplicationListener (pero) 
+      </add>
+      <update>
+        Add and update some API and the <a href="cluster-howto.html">cluster howto documentation</a> (pero)
+      </update>
+      <update>
+        Refactor ReplicationValve for better understanding and small optimization (pero)
+      </update>
+      <add>
+        Starting a unit test suite for cluster module - very much todo (pero)
+      </add>
+      <fix>
+        Fix ant build.xml to direct compile at cluster module directory (pero)
+      </fix>
+      <fix>
+        Fix some I18N messages, but a lot of work is waiting for fix (pero)
+      </fix>
+      <add>
+        Add ReplicationValve Mbeans stats attribute getter and resetStatistics operation (pero)
+      </add>
+     </changelog>
+  </subsection>
+  
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        <bug>35758</bug>: Admin webapp mishandling digest attribute of JDBCDataSourceRealm. (yoavs)
+      </fix>
+      <add>
+        <bug>34250</bug>: Admin webapp Commit Changes button now asks for confirmation. (yoavs)
+      </add>
+      <add>
+        <bug>34818</bug>: Alternating row for apps in HTML manager, as suggested by Jeff
+          Domeyer. (yoavs)
+      </add>
+      <add>
+        <bug>35379</bug>: Added commons-logging to build path of manager and host-manager apps,
+          to make them build with Jikes, as suggested by Aaron Isotton. (yoavs)
+      </add>
+    </changelog>
+  </subsection>
+ </section>
+
+<section name="Tomcat 5.5.9 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <add>
+        Add JULI, a java.util.logging implementation, used to provide sane defaults and
+        configurability equivalent to Tomcat 4.0 for Tomcat 5.5 logging (remm)
+      </add>
+      <docs>
+        Add JULI documentation to the logging page (remm)
+      </docs>
+      <add>
+        Add host manager webapp (remm)
+      </add>
+      <add>
+        Add ant JkStatusUpdateTask for remote status worker handling ( >=mod_jk 1.2.9) (pero)
+      </add>
+      <add>
+        <bug>33739</bug>: Add reference to RUNNING.txt in setup.html. (yoavs)
+      </add>
+      <fix>
+        <bug>33719</bug>: Update reference to Ant download page. (yoavs)
+      </fix>
+      <fix>
+        <bug>33883</bug>: Bad options in SSL-HowTo. (yoavs)
+      </fix>
+      <update>
+        Update to MX4J 3.0.1 (pero)
+      </update>
+      <update>
+        <bug>34139</bug>: Updated Realm-HowTo to specify JMX, Commons-Logging jars for RealmBase. (yoavs)
+      </update>
+      <add>
+        <bug>33325</bug>: Added top-level clean target to Netbuild build.xml file. (yoavs)
+      </add>
+      <update>
+        <bug>33755</bug>: Clarified Postgresql JNDI datasource example. [patch submitted by
+          Tom Witmer] (yoavs)
+      </update>
+    </changelog>
+   </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Remove some instances of expanded folder removal (remm)
+      </fix>
+      <fix>
+        Don't call mkdirs if we're not going to save the configuration in StandardContext (remm)
+      </fix>
+      <fix>
+        Fix context classloader binding during loader initialization (it was set to null before) (remm)
+      </fix>
+      <fix>
+        The webapp logger should only be retrieved when the context classloader is set to the 
+        webapp's classloader (remm)
+      </fix>
+      <fix>
+        <bug>34170</bug>: Add back retry logic in JDBC realm in case of a connection failure (remm)
+      </fix>
+      <fix>
+        <bug>22041</bug>: Support dynamic proxies as session objects. (markt)
+      </fix>
+      <fix>
+        Fix logger names for wrappers (remm)
+      </fix>
+      <fix>
+        <bug>34006</bug>: If antiResourceLocking was used, HostConfig considered the path as external,
+        and web application resources were not correctly removed or tacked; also simplify the code a lot
+        (remm)
+      </fix>
+      <fix>
+        <bug>34016</bug>: Save and restore docBase when using antiResourceLocking, for compatibility with
+        the admin webapp (remm)
+      </fix>
+      <add>
+        <bug>33636</bug>: Set lastModified attribute when expanding WAR files. (yoavs)
+      </add>
+      <add>
+        <bug>32938</bug>: Allow Salted SHA (SSHA) passwords in JNDIRealm. (yoavs)
+      </add>
+      <add>
+        <bug>31288</bug>: Allow SMTP authentication for JNDI MailSessionFactory. (yoavs)
+      </add>
+      <update>
+        Harmonize processing of the context.xml defaults with the way web.xml is processed
+        (remm)
+      </update>
+      <fix>
+        Ignore ';' if it is in the query string (remm)
+      </fix>
+      <fix>
+        private to protected for the webapp classloader (remm)
+      </fix>
+      <fix>
+        Improve logging of filters and listeners startup errors (remm)
+      </fix>
+      <fix>
+        <bug>33774</bug>: Retry once in JNDI realm authenticate failure regardless of the 
+        exception message (remm)
+      </fix>
+      <fix>
+        <bug>33961</bug>: Don't encode '~' in context paths (remm)
+      </fix>
+      <fix>
+        <bug>32866</bug>: Propagate distributable property from context to manager (yoavs)
+      </fix>
+      <fix>
+        <bug>32867</bug>: Reset distributable attribute in context for clean reload handling (yoavs)
+      </fix>
+      <update>
+          Fix some RealmBase/JNDIRealm log.isXXXEnabled (pero)
+      </update>
+      <fix>
+          <bug>34161</bug>: Harmonize StandardContext.stop with ContainerBase.stop (remm)
+      </fix>
+    </changelog>
+   </subsection>
+   
+   <subsection name="Coyote">
+     <changelog>
+      <fix>
+        <bug>33971</bug>: Set remoteHost to null when Apache doesn't send one. (billbarker)
+      </fix>
+      <fix>
+        Fix calculation of threadRatio for the ms thread pool, and fix setting the updated
+        timeout value (remm)
+      </fix>
+      <update>
+        Update the ms thread pool so that we allocate a worker before accepting a new socket,
+        and wait a little if the pool is exhausted; this should make low maxThreads values work a 
+        lot better (remm)
+      </update>
+      <update>
+        <bug>33857</bug>: Update information on automatic mod_jk configuration in Apache-HowTo (yoavs)
+      </update>
+      <fix>
+        Fix sync block placement in Mapper.addContext (remm)
+      </fix>
+      <fix>
+        <bug>32741</bug>: Fix spelling of "committed" [patch from Ben Souther] (yoavs)
+      </fix>
+      <fix>
+        <bug>34133</bug>: Make setHeader clear multi-valued headers (billbarker)
+      </fix>
+     </changelog>
+   </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>34034</bug>: Jasper does not respect external entities (billbarker)
+      </fix>
+      <fix>
+        <bug>33810</bug>: Incorrect recycling of BodyContent if close is called (remm)
+      </fix>
+      <update>
+        Per instance loggers in Jasper (remm)
+      </update>
+    </changelog>
+  </subsection>
+   
+   <subsection name="Cluster">
+    <changelog>
+      <fix>
+        Fix JvmRouteBinderValve primary failover attribute to
+        org.apache.catalina.cluster.session.JvmRouteOrignalSessionID (pero)
+      </fix>
+      <fix>
+        Change attribute name waitForAck to sendAck at ReplicationListener (pero)
+      </fix>
+      <add>
+        Integrate new fastasyncqueue cluster sender mode.
+        Support queue size limitation,
+        get all queued objects and send it to the backup node,
+        no queue thread lock contention under high replication load,
+        submitted by Rainer Jung (pero)
+      </add>
+      <add>
+        Add compress attribute to Sender and Receiver to transfer data uncompressed. 
+        At high cluster load this option consume lesser cpu and memory.
+        Implement the compress handling to ReplicationTransmitter, ReplicationListener, 
+        XByteBuffer and Jdk13ReplicationListener (pero)
+      </add>
+      <add>
+        Add doProcessingStats to synchronous, asynchronous and fastqueueasync sender modes
+        to get min, avg, max processing times as IDataSender JMX MBeans (pero)
+      </add>
+      <fix>
+        TcpThreadPool use constant ACK byte array instead create 
+        new 3 byte buffer for every message ack (pero)
+      </fix>
+      <update>
+        Refactor ReplicationTransmitter and ReplicationListener (pero)
+      </update>
+      <update>
+        add getCatalinaCluster() to ClusterReceiver and SimpleTcpCluster (pero)
+      </update>    
+      <update>
+        Update the Api documentation (pero)
+      </update>
+    </changelog>
+   </subsection>
+   <subsection name="Webapps">
+     <changelog>
+       <update>
+         Use the standard struts taglib URIs in admin JSPs. (billbarker)
+       </update>
+      <add>
+        Add more host parameters to create new host with host-manager (pero)
+      </add>
+      <fix>
+        <bug>34033</bug>: Fix quoting related bugs (remm)
+      </fix>
+      <fix>
+        <bug>33713</bug>: Add Struts init code in frameset.jsp as well (remm)
+      </fix>
+     </changelog>
+   </subsection>
+</section>
+
+<section name="Tomcat 5.5.8 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <fix>
+        <bug>33204</bug>: Fixed SSL HowTo page. (yoavs)
+      </fix>
+      <fix>
+        <bug>33351</bug>: Fix silent uninstallation. (remm)
+      </fix>
+      <fix>
+        <bug>33489</bug>: Missing space in uninstaller message. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Unregister host mbean and all context mbeans at remove a host, s. StandardHost.destroy() and MBeanFactory.createStandardHost/removeHost(,) detected by Thorsten Kamann (pero)
+      </fix>
+      <fix>
+        make it possible to restart connector, now serversocket recreated after stop,start (pero)
+      </fix>
+      <fix>
+        change mbean names from Mapper and ProtocolHandler to connector naming style (pero)
+      </fix>
+      <update>
+        Add some log.isXXXEnabled (pero)
+      </update>
+      <fix>
+        Deregister MapperListener after remove connector (pero)
+      </fix>
+      <fix>
+        Remove host only at own domain with same name at all services, detected by Thorsten Kamann (pero)
+      </fix>
+      <fix>
+        <bug>33187</bug>: Remove any logging of the password in the JAAS realm,
+        submitted by Andrew Jaquith (remm)
+      </fix>
+      <fix>
+        <bug>33033</bug>: Don't do anything to the response in the ErrorReportValve
+        if data has already been written (remm)
+      </fix>
+      <update>
+        Add charset support for the URLs used by the tasks, to remove deprecation (remm)
+      </update>
+      <fix>
+        <bug>26135</bug>: Workaround for memory leak when reloading Struts
+        based web applications by clearing the bean instrospector cache of the JVM on
+        classloader stop, submitted by Tobias Lofstrand. (remm)
+      </fix>
+      <fix>
+         Ensure that if CLASSPATH is declared on startup - it is not used. (funkman)
+      </fix>
+      <fix>
+         Add back use of deployOnStartup in HostConfig (remm)
+      </fix>
+      <docs>
+         Ant tasks docs patches, submitted by Gabriele Garuglieri. (remm)
+      </docs>
+      <update>
+         Use NIO for the raw copying operation, as it is faster (a little under 30%), 
+         and decreases a little the impact of antiResourceLocking. (remm)
+      </update>
+      <fix>
+         <bug>33357</bug>: Fix connection leaks with the DataSourceRealm, as well 
+         as improve efficiency, submitted by Dominik Drzewiecki. (remm)
+      </fix>
+      <update>
+         Improve a little logging of servlet exceptions, which should all log the root cause. (remm)
+      </update>
+      <update>
+         Add new Manager.createSession(sessionId) method, allowing the client to "specify" the session id which should be used using a cookie
+         when using emptySessionPath="true". This fixes session tracking in this case. (remm)
+      </update>
+      <fix>
+         <bug>33368</bug>: Fix memory leak in swallowOutput feature which occurred when the thread pool size is
+         reduced, submitted by Rainer Jung. (remm)
+      </fix>
+         <fix>
+          StoreConfig: can't save cluster Membership element (pero)
+       </fix>
+         <add>
+          StoreConfig: suppress default jkHome attribute at connector  (pero)
+      </add>
+         <add>
+          StoreConfig: Save new dymanic properties from ReplicationTransmitter  (pero)
+      </add>
+      <fix>
+         <bug>33463</bug>: Remove attributes after context destroy. (remm)
+      </fix>
+      <fix>
+         <bug>33572</bug>: context.xml should be a redeploy resource, and add prioritization for
+         redeploy resources. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+         PoolTcpEndpoint recreate ServerSocket after start,stop,start connector (pero)
+      </fix>
+      <update>
+        Add some log.isXXXEnabled (pero)
+      </update>
+         <add>
+           JkMX: make log4j mbean configurable with attribute log4jEnabled (pero)
+         </add>
+         <fix>
+           When Tomcat runs on Windows and IE is uploading data to the server, the first read 
+           must be at least 8KB, otherwise upload speed is extremely low, submitted by Noel 
+           Rocher (remm)
+         </fix>
+    </changelog>
+  </subsection>
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>33223</bug>: pageContext.forward and jsp:include result
+        in StringIndexOutOfBoundsException (luehe)
+      </fix>
+      <fix>
+        <bug>33373</bug>: Fix handling of context classloader in jspc (remm)
+      </fix>
+      <fix>
+        <bug>33538</bug>: Ignore example and tag-extension elements in TagLibraryInfoImpl. (yoavs)
+      </fix>
+      <fix>
+        <bug>33539</bug>: Better error message when an unknown element is encountered in the tag file. (yoavs)
+      </fix>
+      <fix>
+        <bug>33219</bug>: Minor JspServletWrapper code cleanup. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+  
+  <subsection name="Cluster">
+    <changelog>
+       <fix>
+          Add instance based ReplicationValve statistics to Mbean descriptor (pero)
+       </fix>
+       <fix>
+          Better I18N support to cluster session and tcp classes (pero)
+       </fix>
+       <add>
+          Support optional primaryIndicator at ReplicationValve to mark that 
+          request processing to existing session is at primary cluster node. 
+          Easy failover detection, when mark is not at 
+          configurable primaryIndicator attribute, submitted by Rainer Jung (pero)
+       </add>
+       <update>
+          Refactor all implementation from interface IDataSenders (pero)
+       </update>
+      <add>
+          Add some usefull attributes and operations to the all sender MBeans. (pero)
+       </add>
+      <add>
+          Add keepAlive and waitForAck handling to AsyncSocketSender and factor out a DataSender base class.(pero)
+       </add>
+       <add>
+          ReplicationTransmitter: Enable and Disable autoreconnect sender and waitForAck. (pero)
+       </add>
+       <add>
+          ReplicationTransmitter: transfer all properties to socket sender from server.xml configuration. (pero)
+       </add>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        Fix create and remove Host for Admin app. (pero)
+      </fix>
+    </changelog>
+   </subsection>
+</section>
+
+<section name="Tomcat 5.5.7 (remm)">
+  <subsection name="General">
+    <changelog>
+      <add>
+        Add installer for mod_jk on IIS. (mturk)
+      </add>
+      <add>
+        New store config module for better server.xml saving support.<br/>
+        Add &lt;Listener className="org.apache.catalina.storeconfig.StoreConfigLifecycleListener" /&gt; to your server.xml (pero)
+      </add>
+      <update>
+        <bug>32081</bug>: Remove the JDK requirement from the Unix scripts, submitted
+        by Ben Souther (remm)
+      </update>
+      <fix>
+        <bug>32953</bug>: SERVLETAPI: XSS Issues, submitted by Mark Thomas (jfarcand)
+      </fix>
+      <update>
+        Update to commons-digester 1.6, JDT 3.0.1, MX4J 2.1.0, Struts 1.2.6 (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <update>
+         First integration at StoreConfig to StandardServer (pero)
+      </update>
+      <fix>
+        <bug>32714 </bug>: Don't make the AccessLogValve final (funkman)
+      </fix>
+      <fix>
+        <bug>32694</bug>: Fix bad code to make docBase path aboslute in antiLocking
+        method. (remm)
+      </fix>
+      <fix>
+        <bug>32713</bug>: Fix resource-env-ref handling. (remm)
+      </fix>
+      <fix>
+        <bug>31201</bug>: Improve i18n support in DefaultServlet. This was causing
+        problems with JSP include actions and static files. (markt)
+      </fix>
+      <fix>
+        Add some log.isXXXEnabled to o.a.c.core.StandardHost StandardEngine, StandardService (pero)
+      </fix>
+      <add>
+        Feature addition to add Redirector and failOnError support for all Catalina Ant tasks,
+        submitted by Gabriele Garuglieri (remm)
+      </add>
+      <fix>
+        <bug>31198</bug>: Fix FORM and DIGEST authentication for non-ASCII
+        usernames and passwords. (markt)
+      </fix>
+      <fix>
+        Reimplement charset mapper (remm)
+      </fix>
+      <fix>
+        Add logging of exception which could occur when retrieving the password in JDBCRealm (remm)
+      </fix>
+      <fix>
+        <bug>25889</bug>: Don't execute queries twice, submitted by Tom Anderson (remm)
+      </fix>
+      <fix>
+        <bug>32832</bug>: request.getSession(false) fails to return null (luehe)
+      </fix>
+      <fix>
+        <bug>28222</bug>: request.getRequestURL() in forwarded jsp/servlet returns
+        original url rather than new url as per SRV8.4 (markt)
+      </fix>
+      <fix>
+        <bug>33157</bug>: Fix handling of the buffer length for basic authentication parsing (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        <bug>32708</bug>: Better handling of bad encoding with the string cache. (remm)
+      </fix>
+      <fix>
+        <bug>32781</bug>: Fix bad initialization of the "scheme" field of the request
+        object, which would cause getScheme to return "http" for the first request. (remm)
+      </fix>
+      <fix>
+        Content length should be ignored if there is chunking (remm)
+      </fix>
+      <fix>
+        Remove most deprecation problems for the AJP connector (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>32746</bug>: Avoid JAR locking when loading classes and improve loading
+        performance by taking advantage of caching, submitted by Dominik Drzewiecki. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+       <fix>
+          correct JvmRouteSessionIDBinderListener MBean name to &lt;domain&gt;:type=Listener,name=JvmRouteSessionIDBinderListener,host=&lt;host&gt; (pero)
+       </fix>
+       <add>
+          JMX support to SimpleTcpCluster, ReplicationTransmitter and all senders (pero)
+       </add>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        Fix the webDAV servlet so it can be used via any arbitrary mapping
+        (eg /webdav/*) to edit the contents of a web application. (markt)
+      </fix>
+      <fix>
+        <bug>32729</bug>: Stop is optional and may fail, so it needs to be in a separate try/catch (remm)
+      </fix>
+      <update>
+        Remove the remove method of the manager servlet, and use the undeploy method instead (remm)
+      </update>
+      <fix>
+        <bug>32777</bug>: Fail if application isn't configured properly, submitted by Gabriele Garuglieri
+        (remm)
+      </fix>
+      <fix>
+        <bug>32771</bug>: Cannot undeploy/deploy misconfigured app after tomcat startup,
+        submitted by Gabriele Garuglieri (remm)
+      </fix>
+      <fix>
+        <bug>28867</bug>: Correct manager documentation to document correct way to
+        reference the ROOT context. Submitted by Stephane Bailliez. (markt)
+      </fix>
+      <fix>
+        <bug>33085</bug>: Add support for setting privileged attribute of context
+        to admin webapp. (markt)
+      </fix>
+      <fix>
+        <bug>33117</bug>: Fix Open bugs link broken on default homepage.
+        Patch supplied by Sander Temme. (markt)
+      </fix>
+      <fix>
+        Improve javadoc generation for Catalina. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.6 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        <bug>32532</bug>: updated logging documentation. (yoavs)
+      </update>
+      <update>
+        <bug>32382</bug>: Index page and packaed WAR for sample webapp. (yoavs)
+      </update>
+      <fix>
+        <bug>32603</bug>: Updated host.xml to reflect appBase resolution. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Add child to the map of the parent before starting it. (remm)
+      </fix>
+      <fix>
+        Decouple usage of the scheme and secure attributes from enabling SSL. (remm)
+      </fix>
+      <fix>
+        <bug>32502</bug>: memory leak in DigestAuthenticator. (yoavs)
+      </fix>
+      <fix>
+        <bug>28709</bug>: javax.servlet.http.HttpServletRequest.isRequestedSessionIdValid() returns true for an invalidated session. (luehe)
+      </fix>
+      <fix>
+        <bug>32137</bug>: Possible thread-safety issue in RealmBase. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        <bug>32585</bug>: Better handling for content length greater than Integer.MAX_VALUE in response. (markt)
+      </fix>
+      <update>
+        Allow ApacheConfig and friends to live under an Engine. (billbarker)
+      </update>
+      <update>
+        Syncronize access to the Jk Request registration count. (billbarker)
+      </update>
+      <update>
+        Speed the MsgContext on its way to GC. (billbarker)
+      </update>
+      <fix>
+        Keep correct thread counts in Thread pool when thread ends in an exception (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <update>
+        Updated Jasper-HowTo section on using Jikes, changed conf/web.xml JSPServlet to refer people to Jasper-HowTo so that we don't have these instructions in two places. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        <bug>32505</bug>: Fix handling of an empty context parameter (which occurred every time the HTML
+        manager was used to deploy a local war without specifying also a context file). (remm)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.5 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        <bug>32235</bug>: Sync conf/web.xml MIME types with Apache httpd. (yoavs)
+      </update>
+      <fix>
+        <bug>31132</bug>: Better -x/-r support for OS/400 in startup scripts. (yoavs)
+      </fix>
+      <update>
+        <bug>22679</bug>: Added misc note on accessing session ID to SSL-HowTo. (yoavs)
+      </update>
+ <!-- ByteBufferAccessLogValve.java is not inside!!
+      <update>
+        Add an asynchrounous access log valve based on NIO (jfarcand)
+      </update>
+ -->
+       <update>
+        <bug>32249</bug>: Updated logging documentation. (yoavs)
+      </update>
+      <update>
+        <bug>32282</bug>: Modify Windows Uninstaller to only remove webapps/ROOT and webapps if user asks to remove everything. (yoavs)
+      </update>
+      <fix>
+        <bug>32371</bug>: outdated introduction.xml page. (yoavs)
+      </fix>
+      <fix>
+        <bug>32373</bug>: outdated installation.xml page. (yoavs)
+      </fix>
+      <update>
+        <bug>32454</bug>: amended JNDI documentation for JavaMail/JavaActivationFramework usage. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        <bug>32130</bug>: Add safety check to FileStore#keys method. (yoavs)
+      </fix>
+      <update>
+        <bug>32276</bug>: Add developer info to Realm How-To. (yoavs)
+      </update>
+      <fix>
+        <bug>32082</bug>: Added protected getPrincipals method to MemoryRealm for easier extension. (yoavs)
+      </fix>
+      <fix>
+        <bug>32023</bug>: CGIServlet fails to handle post message with multipart/form data. (yoavs)
+      </fix>
+      <fix>
+        <bug>32269</bug>: JNDIRealm fails with InvalidNameException to authenticate users if LDAP distinguished name (DN) contains slash or double quote character(s). (yoavs)
+      </fix>
+     <fix>
+        Move processExpiresFrequency check to ManagerBase and reflect change to all subclasses (StandardManager, PersientManagerBase, DeltaManager). (pero)
+      </fix>
+      <update>
+        Add DIGEST authentication support to the JDBC and DataSource realms. Supports both digested and cleartext passwords. (markt)
+      </update>
+      <fix>
+        <bug>32429</bug>: CGIServlet calculates number of lines received on stderr incorrectly. (markt)
+      </fix>
+      <fix>
+        <bug>32431</bug>: Fix typo in code that passes data to CGI script. (markt)
+      </fix>
+      <fix>
+        <bug>32430</bug>: Class cast exception in toString() method within CGI servlet. (markt)
+      </fix>
+      <fix>
+         Add some log.isXXXEnabled checks at StandardContext and HostConfig (pero)
+      </fix>
+      <fix>
+         Remove the last DefaultContext artifacts (pero)
+      </fix>
+      <fix>
+         <bug>32031</bug>: using createConnector with "http" protocol (remm)
+      </fix>
+      <fix>
+         Add configFile attribute in JMX descriptors (remm)
+      </fix>
+      <fix>
+         Fix autodeployer handling of a war which includes a /META-INF/context.xml, so that it is
+         correctly registered and can be reloaded correctly (remm)
+      </fix>
+      <fix>
+         <bug>32137</bug>: Use of MessageDigest should be synced in DIGEST (remm)
+      </fix>
+      <fix>
+         Add info log when the autodeployer reloads a context (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <update>
+        Small HTTP/1.1 optimizations: replace usage of Strings with constant byte arrays, and
+        simplify the code converting Strings to bytes (remm)
+      </update>
+      <update>
+        Greatly reduce the amount of recycle method calls on the buffers (remm)
+      </update>
+      <fix>Add null OName check for Request unregistration in Jk, to remove
+           exception under JDK 1.5. (billbarker)
+      </fix>
+      <fix><bug>32292</bug>: Don't send keep-alive header when the protocol
+           can't be parsed. (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <update>
+        Updated JspC usage messages to include recently added configurable parameters. (yoavs)
+      </update>
+      <fix>
+        <bug>32330</bug>: JspC changes context classloader. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+       <add>
+          JvmRouteBinderValve/JvmRouteSessionIDBinderListener to bind cluster session after primary node failure at first calling backup node.
+          This was an option to have session stickyness after cluster node crashed. Work only with JESSIONID cookies. (pero)
+       </add>
+       <add>
+          Better log support to DeltaManager to see detail information at debug level. (pero)
+       </add>
+       <fix>
+          Fix FarmWarDeployer based on new HostConfig deployer. (pero)
+       </fix>
+       <fix>
+          FarmWarDeployer controlled WarWatcher with engine backgroundProcess call.
+          Added processDeployFrequency attribute to Deployer server.xml element. (pero)
+       </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <update>
+        <bug>32019</bug>: Remove maxlength=64 restriction on env entry values in admin webapp. (yoavs)
+      </update>
+      <fix>
+        Fix various problems in realm docs, submitted by Phil Mocek. (remm)
+      </fix>
+      <update>
+        Add log4j docs submitted by Allistair Crossley. (remm)
+      </update>
+      <fix><bug>32381</bug>: Fix problem where EL expression is used as a
+        place holder in the admin webapp.
+        Submitted by Allistair Crossley. (billbarker)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.4 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        <bug>31671</bug>: Update web.xml files to 2.4 schema where applicable. (yoavs)
+      </update>
+      <update>
+        <bug>31912</bug>: Add PNG and CSS file types to replication filter default. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Add processExpiresFrequency to PersistentManagerBase and made some small JDBCStore optimizations (pero)
+      </fix>
+      <fix>
+        Register JSP monitoring mbean for each servlet that declares a jsp-file in web.xml. (luehe)
+      </fix>
+      <fix>
+        <bug>31578</bug>: Update Manager configuration documentation. (yoavs)
+      </fix>
+      <fix>
+        <bug>31273</bug>: Add support for derefaliases in JNDIRealm. (markt)
+      </fix>
+      <fix>
+        <bug>31623</bug>: Better OS400 support in setclasspath.sh. (yoavs)
+      </fix>
+      <add>
+        Extend background processing to most container components. (remm)
+      </add>
+      <fix>
+        Remove all MX4J related code. (remm)
+      </fix>
+      <fix>
+        Update JAR list in TldConfig. (remm)
+      </fix>
+      <add>
+        Register datasources with JMX. With DBCP, this is enough to provide JMX management and monitoring.
+        It might work well with many other data sources which might not register themselves in JMX
+        but do expose their stuff in a java bean fashion. (remm)
+      </add>
+      <update>
+        Add the ability to force session cookies to be set to the root path "/". This should not be used
+        on large servers, otherwise tons of cookies may be sent. (remm)
+      </update>
+      <fix>
+        Workaround for client socket exceptions occurring while running a CGI, which could cause
+        the external process to hang. (remm)
+      </fix>
+      <update>
+        Optimize session cookie IDs conversion to String, since this is an unavoidable and uncacheable
+        operation. (remm)
+      </update>
+      <fix>
+        Add explicit error message if temp dir does not exist, and remove useless calls to initDirs. (remm)
+      </fix>
+      <add>
+        Add an optimized access log valve, supporting hardcoded support for the common and combined patterns,
+        and doing a majority of its write-to-logfile operations asynchronously. (remm)
+      </add>
+      <update>
+        Register an MBean to monitor and manage the StringCache, and allow invoking the reset operation. (remm)
+      </update>
+      <fix>
+        <bug>31677</bug>: Log warning if work dir for context can't be determined. (yoavs)
+      </fix>
+      <fix>
+        <bug>31903</bug>: Fix condition which seems to not have been properly updated after adding
+        entry.binaryContent = null a little below, submitted by Joe Zhou. (remm)
+      </fix>
+      <fix>
+        Prevent silent NPEs during StandardContext.start dealing with JMX registration of realm, submitted
+        by Keith Wannamaker. (remm)
+      </fix>
+      <fix>
+        <bug>31592</bug>: Support other encodings for digests. (yoavs)
+      </fix>
+      <update>
+        <bug>31739</bug>: Minor realm-howto and AJP connector doc updates. (yoavs)
+      </update>
+      <fix>
+        <bug>31753</bug>: Minor inconsistency between JDBC and DataSourceRealm#authenticate. (yoavs)
+      </fix>
+      <update>
+        <bug>31683</bug>: Minor clarifications to realm documentation. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Improve i18n in TCP endpoint, and add a better error message when an exception occurs
+        in setSocketOptions. (remm)
+      </fix>
+      <fix>
+        <bug>31663</bug>: Use interval field as the delay for monitor thread. (remm)
+      </fix>
+      <fix>
+        Remove bad shutdown logic for ms pool strategy. (remm)
+      </fix>
+      <fix>
+        Sync with Cookie, by adding ' ' as a special char. If a special char is present,
+        the string will be quoted. If the client doesn't support it, the String will no be quoted anyway
+        and no IAE will be thrown. (remm)
+      </fix>
+      <add>
+        Add an optional String cache for ByteChunk.toString and CharChunk.toString. The cache is
+        unsynchronized during most of its operation, and is static after a training period. An operation
+        is provided to allow resetting the cache. (remm)
+      </add>
+      <update>
+        String caching is enabled by default for ByteChunk. (remm)
+      </update>
+      <fix>
+        <bug>31090</bug>: Use a URL encoded path when setting session cookies. (remm)
+      </fix>
+       <add>
+          Add getAttributeName() to ProtocolHandler to get all attributes at runtime (pero)
+       </add>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <update>
+        Exposed compilerSourceVM and compilerTargetVM options to JspC. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+       <fix>
+          DeltaManager and SimpleTcpReplicationManager generate double jvmRoute (pero)
+       </fix>
+       <add>
+          Add some missing Getters and log.isXXXEnableds (pero)
+       </add>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        <bug>31707</bug>: Broken JavaScript confirmation in HTML manager. (yoavs)
+      </fix>
+      <fix>
+        Remove hard-coded admin context path from admin's banner.jsp. (yoavs)
+      </fix>
+      <update>
+        Major connector docs update. (remm)
+      </update>
+      <fix>
+        <bug>31732</bug>: Fix Japanese localization of Manager's list output. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+</section>
+
+<section name="Tomcat 5.5.3 (yoavs)">
+
+  <subsection name="General">
+    <changelog>
+      <fix>
+        <bug>30568</bug>: Incomplete setup.html documentation for launching jsvc. (yoavs)
+      </fix>
+      <update>
+        Repackage naming features. (remm)
+      </update>
+      <fix>
+        Fix deployer packaging. (remm)
+      </fix>
+      <fix>
+        Fix embed packaging. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Fix memory leak when Security Manager is turned on. (jfarcand)
+      </fix>
+      <fix>
+        When checking status codes for error handling, only check if
+        Response.isError() is true. This way, users may use setStatus() to set their own
+        error status without having the error page invoked. (in which case, the user should've
+        use sendError()) (funkman)
+      </fix>
+      <update>
+        Remove Digester code for Xerces workaround. (jfarcand)
+      </update>
+      <fix>
+        Give proper permission to the balancer app when running under the security manager. (jfarcand)
+      </fix>
+      <fix>
+        <bug>30869</bug>: Make sure JAAS realm name is legal. (yoavs)
+      </fix>
+      <update>
+          md5Helper, md5Encoder, and normalize are used by WebdavServlet,
+          not DefaultServelt so move them into WebdavServlet.
+      </update>
+      <fix>
+        <bug>31277</bug>: Clarified automatic application deployment section of Host configuration page. (yoavs)
+      </fix>
+     <fix>
+       <bug>28631</bug>: JAASRealm enhancements to support custom user and role classes  use Commons-Logging. (yoavs)
+     </fix>
+     <fix>
+       <bug>31364</bug>: Missing resource in org.apache.catalina.core.LocalString.properties. (yoavs)
+     </fix>
+     <fix>
+       <bug>31362</bug>: Missing -Xdebug in catalina.bat when launching with JPDA and Security. (yoavs)
+     </fix>
+     <fix>
+       <bug>31356</bug>: Duplicates not counted in session generation. (yoavs)
+     </fix>
+     <fix>
+       <bug>30949</bug>: Make sure ApplicationDispatcher unwraps request/response even if include error occurs. (yoavs)
+     </fix>
+      <fix>
+        Fixed StandardContext.getStartTime() to return actual start time/date instead of time (startupTime) it took to start context. (luehe)
+      </fix>
+      <update>
+        getRequest/getResponse should return the most relevant interface, to avoid casts. (remm)
+      </update>
+      <update>
+        Add check for directory before considering something is a compressed WAR. (remm)
+      </update>
+      <docs>
+        Update the connector documentation. (remm)
+      </docs>
+      <fix>
+        When parsing a context file, ignore the "path" attribute:
+        the only place where it is acceptable is in server.xml. (remm)
+      </fix>
+      <fix>
+        Digester handling fixes: always call reset in a finally block after using a digester. (remm)
+      </fix>
+      <update>
+        Remove many fields from Connector, and tie the creation of the Connector to the
+        creation of the protocol handler. (remm)
+      </update>
+      <update>
+        Remove package triggers from the classloader, which seem useless when using Java 5. (remm)
+      </update>
+      <fix>
+        Realms will now use set attribute to set themselves in their container when using JMX. (remm)
+      </fix>
+      <fix>
+        Fix JMX related operations with the Connector. (remm)
+      </fix>
+      <fix>
+        Fix save-to-XML for naming resources. (remm)
+      </fix>
+      <fix>
+        Remove authenticator "debug" attributes from the descriptors. (remm)
+      </fix>
+      <update>
+        Refactor org.apache.catalina.deploy.ContextXXX to use new super class ResourceBase. (pero)
+      </update>
+      <fix>
+        Enable Connector.findLifecycleListener that we can listen start/stop Connector events and save the listener to xml. (pero)
+      </fix>
+      <update>
+        Remove Watchdog references, as it is no longer used. (yoavs)
+      </update>
+      <fix>
+        <bug>31511</bug>: Don't call setenv.bat if not found, in *using-launcher scripts. (yoavs)
+      </fix>
+      <fix>
+        <bug>31549</bug>: Add name to WebappClassLoader's stopped message. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <update>
+        Allow customized server header for Standalone. (funkman)
+      </update>
+      <fix>
+        Digester.reset now removes the error handler, the root and calls clear, to prevent
+        any memory leak. (remm)
+      </fix>
+      <update>
+        Remove useless stuff in digester. (remm)
+      </update>
+      <update>
+        In HTTP, add a utility method to convert strings to byte arrays, and output the server header
+        directly as bytes. (remm)
+      </update>
+      <add>
+        Add a master slave thread pool based on the code from Tomcat 4.0. It is less exotic than the
+        default one, and might fare better on some picky systems, such as Redhat 9. The two threadpools
+        will likely be removed once we use the Java 5 API, although more investigation is needed. (remm)
+      </add>
+      <fix>
+        Fix issue with getProperty in IntrospectionUtils. (remm)
+      </fix>
+      <update>
+        Remove attribute translation for SSL in the HTTP protocol handler: it will now be done in the
+        Catalina Connector class. (remm)
+      </update>
+      <fix>
+        Fix handling of the "timeout" attribute of the HTTP protocol handler. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        <bug>31171</bug>: Wrap to avoid ClassCastException in PageContextImpl. (yoavs)
+      </fix>
+      <fix>
+        <bug>31257</bug>: Added specification of endorsed dirs if forking.  Note that this is fairly useless for now in 5.5 since it uses JDT and not javac by default. (yoavs)
+      </fix>
+      <docs>
+        Document new Jasper defaults, and update the production configuration. (remm)
+      </docs>
+      <fix>
+        Copied XML encoding detection logic into JASPER, so we're no longer dependent on Xerces. (luehe)
+      </fix>
+      <fix>
+        Fix cosmetic issue where extra CRLF would be inserted during each precompilation in web.xml. (remm)
+      </fix>
+      <update>
+        Allow configuring the interval following a compilation during which a JSP will not be checked
+        for modifications. (remm)
+      </update>
+      <fix>
+        <bug>31465</bug>: Ensure that the compiler reads the .java file using the same encoding as that with which it was written. (markt)
+      </fix>
+      <fix>
+        <bug>31510</bug>: Null out response in JspWriterImpl#recycle to aid in JBoss memory leak. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+      <update>
+        Added flag to the cluster (notifyListenersOnReplication) to enable/disable the
+        notifications of attribute/context listeners upon replication of a session delta
+        Works only with the DeltaManager (fhanik)
+      </update>
+      <update>
+        Added flag to the cluster (Cluster/Sender/ackTimeout) to set the timeout in milliseconds
+        for a synchronous request to go through, defaults to 15000ms (fhanik)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <fix>
+        <bug>29485</bug>: I broke the HTML manager when adding JavaScript confirmation, fixed now ;) (yoavs)
+      </fix>
+      <fix>
+        <bug>31058</bug>: Ensure StatusTransformer escapes query string for XML. (yoavs)
+      </fix>
+      <update>
+        Added contexts' start time (available from 'startTime' MBean attribute of StandardContext) to status page (luehe)
+      </update>
+      <fix>
+        <bug>31264</bug>: the deploy task should now behave correctly. (remm)
+      </fix>
+      <update>
+        Refactor the manager servlet to make calls to the deployer more robust. (remm)
+      </update>
+      <fix>
+        Use the more robust String.valueOf in the form edit action of the connector. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+</section>
+
+
+<section name="Tomcat 5.5.2 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <fix>
+        The installer will now use the system's JRE. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Fix URL generation for classloaders on Windows, causing common/classes and shared/classes
+        to be unusable (remm)
+      </fix>
+      <fix>
+        <bug>31110</bug>: Fix resource packaging bug for servlets (remm)
+      </fix>
+      <fix>
+        Fix 5.5 regression where going through the authenticator would create a session each time. (remm)
+      </fix>
+      <fix>
+        Fix classname of the connector in Embedded, and remove the socket factory. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        Redo server header handling again. (remm)
+      </fix>
+      <update>
+        Cleanup a little access to the headers using a local variable and
+        use setValue for Server and Date headers. (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        Remove maxTagNesting and curTagNesting since they are unused. (funkman)
+      </fix>
+      <fix>
+        Fix tag files handling with JDT, which were ususable, and refactor the lifecycle handling of
+        the page loader. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.1 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Tomcat 5.5 can be built on JDK 5.0. (yoavs)
+      </update>
+      <fix>
+        Windows installer polish. (mladen, remm)
+      </fix>
+      <update>
+        Remove dependency on Jakarta regexp. (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <fix>
+        Allow overriding the location of the default context file, similar to the default
+        web.xml. (remm)
+      </fix>
+      <update>
+        Backport if-else logic for SSI servlet from 4.1 (funkman)
+      </update>
+      <fix>
+        Remove DefaultContext elements from the digester rules. (remm)
+      </fix>
+      <fix>
+        Fix ResourceLink handling. (remm)
+      </fix>
+      <fix>
+        Modify the auto deployer to get along with contexts which are statically defined in server.xml. (remm)
+      </fix>
+      <fix>
+        Externalize constant strings defining the location of deployment related resources. (remm)
+      </fix>
+      <fix>
+        <bug>31052</bug>: BeanFactory swallows root cause of exception. (yoavs)
+      </fix>
+      <fix>
+        Allow using deploy Ant task with just config attribute, submitted by Michael Schuerig. (remm)
+      </fix>
+      <add>
+        Added longest time an expired session had been alive to set of monitorable session manager attributes. (luehe)
+      </add>
+      <add>
+        Added average time an expired session had been alive to set of monitorable session manager attributes. (luehe)
+      </add>
+      <fix>
+        Clear a reference in the digester where a context would be referenced for more time than it
+        needed, until the next context deployment operation. (remm)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+    <changelog>
+      <fix>
+        <bug>31018</bug>: Race condition in SystemLogHandler. (yoavs)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <fix>
+        Use the "compiler" parameter to allow specifying that Ant should be used. (remm)
+      </fix>
+      <fix>
+        Ignore JDT compiler warnings. (remm)
+      </fix>
+      <add>
+        Added compilerTargetVM option support, "1.4" default. (yoavs)
+      </add>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+    <changelog>
+      <fix>
+        Fix adding the clustering valve, so that session replication actually occurs. (fhanik)
+      </fix>
+    </changelog>
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+      <update>
+        Major documentation update with current Tomcat 5.5 changes. (remm)
+      </update>
+      <update>
+        Added JavaScript confirmation dialog to "dangerous" Manager servler links. (yoavs)
+      </update>
+    </changelog>
+  </subsection>
+</section>
+
+<section name="Tomcat 5.5.0 (yoavs)">
+  <subsection name="General">
+    <changelog>
+      <update>
+        Many updated and fixed JavaDocs. (yoavs)
+      </update>
+      <update>
+        Designed and tested Tomcat on J2SE 5.0 (aka JDK 1.5). (everyone)
+      </update>
+      <update>
+        Bundled Eclipse JDT (new dependency) to allow Tomcat to run on a JRE only, i.e. no JDK required. (remm)
+      </update>
+      <update>
+        Repackage commons-dbcp and its dependencies as a sigle smaller WAR, with renamed packages. (remm)
+      </update>
+      <update>
+        Removed dependencies on commons-digester, commons-beanutils, and commons-collections.
+        The relevant digester functionality is now merged in tomcat-util. (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Catalina">
+    <changelog>
+      <update>
+        Removed usage of org.apache.catalina.Logger, increased usage of commons-logging everywhere. (remm)
+      </update>
+      <update>
+        Refactored classloader code to better handle JAR and general resource locking. (remm)
+      </update>
+      <update>
+        Written JMX-related code to play nicely with J2SE 5.0 built-in JMX abilities. (remm, costin)
+      </update>
+      <update>
+        Extensively profiled and optimized the server startup performance as well as the request mapping and processing pipeline. (remm)
+      </update>
+      <update>
+        The container will now always process a /META-INF/context.xml resource, unless the webapp has a specified external context file. (remm)
+      </update>
+      <update>
+        New default configuration mechanism for web applications, replacing DefaultContext. This uses a
+        shared context file located in conf/context.xml. (remm)
+      </update>
+      <update>
+        Revamped deployer, alloying full hotdeploy (note: on Windows, this requires the anti file locking
+        features). (remm)
+      </update>
+      <update>
+        Remove verbosity from the JNDI resources configuration, by allowing arbitrary attributes on the Resource element. (remm)
+      </update>
+      <update>
+        Simpler Valve interface, to allow smaller stack traces and reducing the amount of method calls. (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Coyote">
+  </subsection>
+
+  <subsection name="Jasper">
+    <changelog>
+      <update>
+        Eclipse JDT is now the default Java compiler in Jasper. Source dependencies are now loaded from
+        the container classloader, and compilation times are much faster. (remm)
+      </update>
+      <update>
+        Jasper development mode should now have acceptable performance for heavily accessed pages.
+        Precompiling JSPs is still significantly more efficient, however. (remm)
+      </update>
+    </changelog>
+  </subsection>
+
+  <subsection name="Cluster">
+  </subsection>
+
+  <subsection name="Webapps">
+    <changelog>
+    </changelog>
+  </subsection>
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/class-loader-howto.xml b/webapps/docs/class-loader-howto.xml
new file mode 100644 (file)
index 0000000..62a24ed
--- /dev/null
@@ -0,0 +1,271 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="class-loader-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+        <author email="yoavs@apache.org">Yoav Shapira</author>
+        <title>Class Loader HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Quick Start">
+
+<p>The following rules cover about 95% of the decisions that application
+developers and deployers must make about where to place class and resource
+files to make them available to web applications:</p>
+<ul>
+<li>For classes and resources specific to a particular web application,
+    place unpacked classes and resources under <code>/WEB-INF/classes</code>
+    of your web application archive, or place JAR files containing those
+    classes and resources under <code>/WEB-INF/lib</code> of your web
+    application archive.</li>
+<li>For classes and resources that must be shared across all web applications,
+    place unpacked classes and resources under
+    <code>$CATALINA_BASE/shared/classes</code>, or place JAR files
+    containing those classes and resources under
+    <code>$CATALINA_BASE/shared/lib</code>.</li>
+</ul>
+
+</section>
+
+
+<section name="Overview">
+
+<p>Like many server applications, Tomcat 5 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 J2SE 2 (that is, J2SE 1.2 or later) 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.  The model for
+web application class loaders differs slightly from this, as discussed below,
+but the main principles are the same.</p>
+
+<p>When Tomcat 5 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>
+
+<source>
+      Bootstrap
+          |
+       System
+          |
+       Common
+      /      \
+ Catalina   Shared
+             /   \
+        Webapp1  Webapp2 ... 
+</source>
+
+<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>
+
+</section>
+
+<section name="Class Loader Definitions">
+
+<p>As indicated in the diagram above, Tomcat 5 creates the following class
+loaders as it is initialized:</p>
+<ul>
+<li><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.</li>
+<li><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 5 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:
+    <ul>
+    <li><em>$CATALINA_HOME/bin/bootstrap.jar</em> - Contains the main() method
+        that is used to initialize the Tomcat 5 server, and the class loader
+        implementation classes it depends on.</li>
+    <li><em>$JAVA_HOME/lib/tools.jar</em> - Contains the "javac" compiler used
+        to convert JSP pages into servlet classes.</li>
+    <li><em>$CATALINA_HOME/bin/commons-logging-api.jar</em> - Jakarta commons 
+        logging API.</li>
+    <li><em>$CATALINA_HOME/bin/commons-daemon.jar</em> - Jakarta commons 
+        daemon API.</li>
+    <li><em>jmx.jar</em> - The JMX 1.2 implementation.</li>
+    </ul></li>
+<li><strong>Common</strong> - This class loader contains additional classes
+    that are made visible to both Tomcat internal classes and to all web
+    applications.  Normally, application classes should <strong>NOT</strong>
+    be placed here.  All unpacked classes and resources in
+    <code>$CATALINA_HOME/common/classes</code>, as well as classes and
+    resources in JAR files under the
+    <code>$CATALINA_HOME/commons/endorsed</code>,
+    <code>$CATALINA_HOME/commons/i18n</code> and
+    <code>$CATALINA_HOME/common/lib</code> directories,
+    are made visible through this
+    class loader.  By default, that includes the following:
+    <ul>
+    <li><em>commons-el.jar</em> - Jakarta commons el, implementing the 
+        expression language used by Jasper.</li>
+    <li><em>jasper-compiler.jar</em> - The JSP 2.0 compiler.</li>
+    <li><em>jasper-compiler-jdt.jar</em> - The Eclipse JDT Java compiler.</li>
+    <li><em>jasper-runtime.jar</em> - The JSP 2.0 runtime.</li>
+    <li><em>jsp-api.jar</em> - The JSP 2.0 API.</li>
+    <li><em>naming-common.jar</em> - The JNDI implementation used by Tomcat 5
+        to represent in-memory naming contexts.</li>
+    <li><em>naming-factory.jar</em> - The JNDI implementation used by Tomcat 5
+        to resolve references to enterprise resources (EJB, connection 
+        pools).</li>
+    <li><em>naming-factory-dbcp.jar</em> - Jakarta commons DBCP, providing a
+        JDBC connection pool to web applications. The classes have been moved
+        out of their default org.apache.commons package.</li>
+    <li><em>naming-java.jar</em> - Handler for the java: namespace.</li>
+    <li><em>naming-resources.jar</em> - The specialized JNDI naming context
+        implementation used to represent the static resources of a web
+        application. This is not related to the support of the J2EE ENC, and
+        cannot be removed.</li>
+    <li><em>servlet-api.jar</em> - The Servlet 2.4 API.</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>
+    </ul></li>
+<li><strong>Catalina</strong> - This class loader is initialized to include
+    all classes and resources required to implement Tomcat 5 itself.  These
+    classes and resources are <strong>TOTALLY</strong> invisible to web
+    applications.  All unpacked classes and resources in
+    <code>$CATALINA_HOME/server/classes</code>, as well as classes and
+    resources in JAR files under
+    <code>$CATALINA_HOME/server/lib</code>, are made visible through
+    this class loader.  By default, that includes the following:
+    <ul>
+    <li><em>catalina.jar</em> - Implementation of the Catalina servlet
+        container portion of Tomcat 5.</li>
+    <li><em>catalina-ant.jar</em> - Some Ant tasks which can be used to
+        manage Tomcat using the manager web application.</li>
+    <li><em>catalina-optional.jar</em> - Some optional components of
+        Catalina.</li>
+    <li><em>commons-modeler.jar</em> - A model MBeans implementation used
+        by Tomcat to expose its internal objects through JMX.</li>
+    <li><em>servlets-xxxxx.jar</em> - The classes associated with each
+        internal servlet that provides part of Tomcat's functionality.
+        These are separated so that they can be completely removed if the
+        corresponding service is not required, or they can be subject to
+        specialized security manager permissions.</li>
+    <li><em>tomcat-coyote.jar</em> - Coyote API.</li>
+    <li><em>tomcat-http.jar</em> - Standalone Java HTTP/1.1 
+        connector.</li>
+    <li><em>tomcat-ajp.jar</em> - Classes for the Java portion of the
+        <code>AJP</code> web server connector, which allows Tomcat to
+        run behind web servers such as Apache and iPlanet iAS and iWS.</li>
+    <li><em>tomcat-util.jar</em> - Utility classes required by some
+        Tomcat connectors.</li>
+    </ul></li>
+<li><strong>Shared</strong> - This class loader is the place to put classes
+    and resources that you wish to share across <strong>ALL</strong>
+    web applications (unless Tomcat internal classes also need access,
+    in which case you should put them in the <strong>Common</strong>
+    class loader instead).  All unpacked classes and resources in
+    <code>$CATALINA_BASE/shared/classes</code>, as well as classes and
+    resources in JAR files under <code>$CATALINA_BASE/shared/lib</code>, are
+    made visible through this class loader. If multiple Tomcat instances are
+    run from the same binary using the $CATALINA_BASE environment variable,
+    then this classloader repositories are relative to $CATALINA_BASE rather
+    than $CATALINA_HOME.</li>
+<li><strong>WebappX</strong> - A class loader is created for each web
+    application that is deployed in a single Tomcat 5 instance.  All unpacked
+    classes and resources in the <code>/WEB-INF/classes</code> directory of
+    your web application archive, plus classes and resources in JAR files
+    under the <code>/WEB-INF/lib</code> directory of your web application
+    archive, are made visible to the containing web application, but to
+    no others.</li>
+</ul>
+
+<p>As mentioned above, the web application class loader diverges from the
+default Java 2 delegation model (in accordance with the recommendations in the
+Servlet Specification, version 2.3, section 9.7.2 Web Application Classloader).  
+When a request to load a
+class from the web application's <em>WebappX</em> class loader is processed,
+this class loader will look in the local repositories <strong>first</strong>,
+instead of delegating before looking.  There are exceptions. Classes which are
+part of the JRE base classes cannot be overriden. For some classes (such as
+the XML parser components in J2SE 1.4+), the J2SE 1.4 endorsed feature can be 
+used  
+(see the common classloader definition above).
+Last, any JAR containing servlet API classes will be ignored by the 
+classloader.
+All other class loaders in Tomcat 5 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 classses (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><em>$CATALINA_HOME/common/classes</em></li>
+<li><em>$CATALINA_HOME/common/endorsed/*.jar</em></li>
+<li><em>$CATALINA_HOME/common/i18n/*.jar</em></li>
+<li><em>$CATALINA_HOME/common/lib/*.jar</em></li>
+<li><em>$CATALINA_BASE/shared/classes</em></li>
+<li><em>$CATALINA_BASE/shared/lib/*.jar</em></li>
+</ul>
+
+</section>
+
+
+<section name="XML Parsers and J2SE 1.4">
+
+<p>Among many other changes, the J2SE 1.4 release packages the JAXP APIs, and
+a version of Xerces, inside the JRE.  This has impacts on applications that
+wish to use their own XML parser.</p>
+
+<p>In previous versions of Tomcat 5, you could simply replace the XML parser
+in the <code>$CATALINA_HOME/common/lib</code> directory to change the parser
+used by all web applications.  However, this technique will not be effective
+when you are running on J2SE 1.4, because the usual class loader delegation
+process will always choose the implementation inside the JDK in preference
+to this one.</p>
+
+<p>JDK 1.4 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://java.sun.com/j2se/1.4/docs/guide/standards/index.html">
+http://java.sun.com/j2se/1.4/docs/guide/standards/index.html</a>.</p>
+
+<p>Tomcat utilizes this mechanism by including the system property setting
+<code>-Djava.endorsed.dirs=$CATALINA_HOME/common/endorsed</code> in the
+command line that starts the container.  Therefore, you can replace the
+parser that is installed in this directory, and it will get used even on a
+JDK 1.4 system.</p>
+
+</section>
+
+
+<section name="Running under a security manager">
+
+<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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/cluster-howto.xml b/webapps/docs/cluster-howto.xml
new file mode 100644 (file)
index 0000000..b8d67b6
--- /dev/null
@@ -0,0 +1,1129 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="cluster-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="fhanik@apache.org">Filip Hanik</author>
+        <author email="pero@apache.org">Peter Rossbach</author>
+        <title>Clustering/Session Replication HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Quick Start">
+
+<p>To run session replication in your Tomcat 5.5 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>Uncomment the <code>Valve(ReplicationValve)</code> 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.</li>
+<li>Make sure your <code>web.xml</code> has the <code>&lt;distributable/&gt;</code> element 
+    or set at your <code>&lt;Context distributable="true" /&gt;</code></li>
+<li>Make sure that jvmRoute attribute is set at your Engine <code>&lt;Engine name="Catalina" jvmRoute="node01" &gt;</code></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.4 or later.</p>
+</section>
+
+
+<section name="Overview">
+
+<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 5 (server/lib/catalina-cluster.jar)</li>
+</ol>
+
+<p>In this release of session replication, Tomcat performs an all-to-all replication of session state.
+
+   This is an algorithm that is only efficient when the clusters are small. For large clusters, the next
+   release will support a primary-secondary session replication where the session will only be stored at one
+   or maybe two backup servers. 
+   Currently you can use the domain worker attribute (mod_jk &gt; 1.2.8) to build cluster partitions
+   with the potential of very scaleable cluster solution.
+   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>
+
+<source>
+        DNS Round Robin
+               |
+         Load Balancer
+          /           \
+      Cluster1      Cluster2
+      /     \        /     \
+  Tomcat1 Tomcat2  Tomcat3 Tomcat4
+</source>
+
+<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, ie, 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>
+
+</section>
+
+<section name="How it Works">
+<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>
+
+</section>
+
+<section name="Cluster Architecture">
+
+<p><b>Component Levels:</b>
+<source>
+         Server
+           |
+         Service
+           |
+         Engine
+           |  \ 
+           |  --- Cluster --*
+           |
+         Host
+           |
+         ------
+        /      \
+     Cluster    Context(1-N)                 
+        |             \
+        |             -- Manager
+        |                   \
+        |                   -- DeltaManager
+        |
+     -----------------------------
+     |          |         |       \
+   Receiver    Sender   Membership  \
+     \                               -- Valve
+     -- SocketReplicationListener    |      \
+     -- ReplicationListener          |       -- ReplicationValve
+                                     |       -- JvmRouteBinderValve 
+                                     |
+                                     -- LifecycleListener 
+                                     |
+                                     -- ClusterListener 
+                                     |      \
+                                     |       -- ClusterSessionListener
+                                     |       -- JvmRouteSessionIDBinderListener
+                                     |
+                                     -- Deployer 
+                                            \
+                                             -- FarmWarDeployer
+      
+      
+</source>
+<source>
+   Sender
+    \
+    -- ReplicationTransmitter 
+             |
+             ---------
+                      \
+                   IDataSender
+                          \
+                          |
+                          --- (sync)
+                          |  \
+                          |   -- PooledSocketSender   (pooled)
+                          |   -- SockerSender         (synchronous)
+                          |                                
+                          --- (async)
+                             \
+                              -- AsyncSocketSender     (asynchronous)
+                              -- FastAsyncSocketSender (fastasyncqueue)         
+</source>
+</p>
+
+</section>
+
+
+<section name="Cluster Configuration">
+<p>The cluster configuration is described in the sample server.xml file.
+What is worth to mention is that the attributes starting with mcastXXX
+are for the membership multicast ping, and the attributes starting with tcpXXX
+are for the actual TCP replication.
+</p>
+<p>
+    The membership is established by all the tomcat instances are sending broadcast messages
+    on the same multicast IP and port.
+    The TCP listen port, is the port where the session replication is received from other members.
+</p>
+<p>
+    The replication valve is used to find out when the request has been completed and initiate the
+    replication.
+</p>
+<p>
+    One of the most important performance considerations is the synchronous (pooled or not pooled) versus asynchronous replication
+    mode. 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.
+    There are two settings for synchronous replication. Pooled or not pooled.
+    Not pooled (ie replicationMode=&quot;fastasnycqueue&quot; or &quot;synchronous&quot;) means that all the replication request are sent over a single
+    socket.
+    Using synchronous mode can potentially becomes a bottleneck when a lot of messages generated,
+    You can overcome this bottleneck by setting replicationMode=&quot;pooled&quot; but then you worker threads blocks with replication .
+    What is recommended here is to increase the number of threads that handle
+    incoming replication request. This is the tcpThreadCount property in the cluster
+    section of server.xml. The pooled setting means that we are using multiple sockets, hence increases the performance.
+    Asynchronous replication, should be used if you have sticky sessions until fail over, then
+    your replicated data is not time crucial, but the request time is, at this time leave the tcpThreadCount to
+    be number-of-nodes-1.
+    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>
+<p>
+    The parameter &quot;replicationMode&quot; has four different settings: &quot;pooled&quot;, &quot;synchronous&quot;, &quot;asynchronous&quot; and &quot;fastasyncqueue&quot;
+</p>
+
+<section name="Simple Cluster Configuration">
+<p>
+Simple one line configuration<br/>
+<source>
+   &lt;Server                 port="8011" 
+                       shutdown="SHUTDOWN" &gt;
+    &lt;GlobalNamingResources&gt;
+    &lt;Resource              name="UserDatabase" auth="Container"
+                           type="org.apache.catalina.UserDatabase"
+                    description="User database that can be updated and saved"
+                        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+                        pathname="conf/tomcat-users.xml" /&gt;
+  &lt;/GlobalNamingResources&gt;
+    &lt;Service              name="Catalina"&gt;
+        &lt;Connector        port="9012" 
+                      protocol="AJP/1.3"
+        &lt;Connector         port="9013"
+                     maxThreads="100"
+                minSpareThreads="4"
+                maxSpareThreads="4"
+        /&gt;
+        &lt;Engine            name="Catalina" 
+                   defaultHost="localhost" 
+                        jvmRoute="node1"&gt;
+        &lt;Realm        className="org.apache.catalina.realm.UserDatabaseRealm"
+                   resourceName="UserDatabase" /&gt;
+            &lt;Host          name="localhost"
+                        appBase="webapps"&gt;
+             &lt;Cluster className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"/&gt;
+            &lt;/Host&gt;
+        &lt;/Engine&gt;
+    &lt;/Service&gt;
+&lt;/Server&gt;
+</source>
+<br/>
+The default mode configuration setup a <em>fastasyncqueue</em> mode cluster configuration with following
+parameters:
+<ul>
+    <li>Open Membership receiver at <em>228.0.0.4</em> and send to multicast udp port <em>8012</em></li>
+    <li>Send membership every 1 sec and drop member after 30sec.</li>
+    <li>Open message receiver at default ip interface at first free port between <em>8015</em> and <em>8019</em>.</li>
+    <li>Receiver message with <em>SocketReplicationListener</em> </li>
+    <li>Configure a <em>ReplicationTransmitter</em> with <em>fastasyncqueue</em> sender mode.</li>
+    <li>Add <em>ClusterSessionListener</em> and <em>ReplicationValve</em>.</li>
+</ul> 
+</p>
+<p>
+<b>NOTE</b>: Use this configuration when you need very quick a test cluster with
+at your developer machine. You can change the default attributes from cluster sub elements.
+Use following cluster attribute prefixes <em>sender.</em>,
+<b>receiver.</b>, <b>service.</b>, <b>manager.</b>, <b>valve.</b> and <b>listener.</b>.
+<br/><b>Example</b> configure cluster at windows laptop with network connection and
+change receiver port range<br/>
+<source>
+&lt;Cluster                 className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
+          service.mcastBindAddress="127.0.0.1" 
+            receiver.tcpListenPort="9070" 
+         receiver.tcpListenMaxPort="9075" /&gt;
+</source>    
+<br/>       
+<b>WARNING</b>: When you add you sub elements, there overwrite the defaults complete.
+<br/><b>Example</b> configure cluster with cluster failover jsessionid support. In this
+case you need also the defaultmode Cluster listener <em>ClusterSessionListener</em> and <em>ReplicationValve</em>.<br/>
+<source>
+&lt;Cluster                 className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
+          service.mcastBindAddress="127.0.0.1" 
+            receiver.tcpListenPort="9070" 
+         receiver.tcpListenMaxPort="9075" &gt;
+       &lt;ClusterListener  className="org.apache.catalina.cluster.session.ClusterSessionListener" /&gt;
+       &lt;ClusterListener  className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" /&gt;
+       &lt;Valve            className="org.apache.catalina.cluster.tcp.ReplicationValve"
+                            filter=".*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"
+                  primaryIndicator="true" /&gt;
+          &lt;Valve            className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
+                             enabled="true"  /&gt;
+&lt;Cluster/&gt;
+</source> 
+</p>
+</section>
+
+<section name="Simple Engine Cluster Configuration for all hosts">
+<p>
+Simple one line engine configuration<br/>
+<source>
+   &lt;Server                 port="8011" 
+                       shutdown="SHUTDOWN" &gt;
+    &lt;GlobalNamingResources&gt;
+    &lt;Resource              name="UserDatabase" auth="Container"
+                           type="org.apache.catalina.UserDatabase"
+                    description="User database that can be updated and saved"
+                        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+                        pathname="conf/tomcat-users.xml" /&gt;
+  &lt;/GlobalNamingResources&gt;
+    &lt;Service              name="Catalina"&gt;
+        &lt;Connector        port="9012" 
+                      protocol="AJP/1.3"
+        &lt;Connector         port="9013"
+                     maxThreads="100"
+                minSpareThreads="4"
+                maxSpareThreads="4"
+        /&gt;
+        &lt;Engine            name="Catalina" 
+                   defaultHost="localhost" 
+                        jvmRoute="node01"&gt;
+        &lt;Realm        className="org.apache.catalina.realm.UserDatabaseRealm"
+                   resourceName="UserDatabase" /&gt;
+        &lt;Cluster      className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"/&gt;
+            &lt;Host          name="localhost"
+                        appBase="webapps"/&gt;
+        &lt;/Engine&gt;
+    &lt;/Service&gt;
+&lt;/Server&gt;
+</source>
+<br/>
+See default mode configuration description as simple host cluster example before.
+</p>
+</section>
+
+<section name="Complex Cluster Configuration">
+<p>
+<br/><b>Example</b> Configure cluster with complete sub elements. Activate this node
+as master farm delopyer. Message receiver is NIO based <em>ReplicationListener</em> with six parallel
+worker threads.
+<br/>
+<source>
+       &lt;Server                 port="8011" 
+                       shutdown="SHUTDOWN" &gt;
+    &lt;GlobalNamingResources&gt;
+    &lt;Resource              name="UserDatabase" auth="Container"
+                           type="org.apache.catalina.UserDatabase"
+                    description="User database that can be updated and saved"
+                        factory="org.apache.catalina.users.MemoryUserDatabaseFactory"
+                        pathname="conf/tomcat-users.xml" /&gt;
+  &lt;/GlobalNamingResources&gt;
+    &lt;Service              name="Catalina"&gt;
+        &lt;Connector        port="9012" 
+                      protocol="AJP/1.3"
+        &lt;Connector         port="9013"
+                     maxThreads="100"
+                minSpareThreads="4"
+                maxSpareThreads="4"
+        /&gt;
+        &lt;Engine            name="Catalina" 
+                   defaultHost="localhost" 
+                        jvmRoute="node01"&gt;
+        &lt;Realm        className="org.apache.catalina.realm.UserDatabaseRealm"
+                   resourceName="UserDatabase" /&gt;
+            &lt;Host          name="localhost"
+                        appBase="webapps"&gt;
+                &lt;Cluster                  className="org.apache.catalina.cluster.tcp.SimpleTcpCluster"
+                                       doClusterLog="true"
+                                     clusterLogName="clusterlog"
+                                  manager.className="org.apache.catalina.cluster.session.DeltaManager"
+                   manager.expireSessionsOnShutdown="false"
+               manager.notifyListenersOnReplication="false"
+        manager.notifySessionListenersOnReplication="false"
+                            manager.sendAllSessions="false"
+                        manager.sendAllSessionsSize="500"
+                    manager.sendAllSessionsWaitTime="20"&gt;
+                  &lt;Membership 
+                                          className="org.apache.catalina.cluster.mcast.McastService"
+                                          mcastAddr="228.0.0.4"
+                                   mcastBindAddress="127.0.0.1" 
+                                 mcastClusterDomain="d10" 
+                                          mcastPort="45564"
+                                     mcastFrequency="1000"
+                                      mcastDropTime="30000"/&gt;
+                  &lt;Receiver 
+                                           className="org.apache.catalina.cluster.tcp.ReplicationListener"
+                                    tcpListenAddress="auto"
+                                       tcpListenPort="9015"
+                                  tcpSelectorTimeout="100"
+                                      tcpThreadCount="6"
+                  &lt;Sender
+                                           className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+                                     replicationMode="fastasyncqueue"
+                        doTransmitterProcessingStats="true"
+                                   doProcessingStats="true"
+                                      doWaitAckStats="true"
+                                       queueTimeWait="true"
+                                        queueDoStats="true"
+                                      queueCheckLock="true"
+                                          ackTimeout="15000"
+                                          waitForAck="true"
+                                    keepAliveTimeout="80000"
+                            keepAliveMaxRequestCount="-1"/&gt;
+                  &lt;Valve                   className="org.apache.catalina.cluster.tcp.ReplicationValve"
+                                              filter=".*\.gif;.*\.js;.*\.css;.*\.png;.*\.jpeg;.*\.jpg;.*\.htm;.*\.html;.*\.txt;"
+                                    primaryIndicator="true" /&gt;
+                  &lt;Valve                    className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
+                                             enabled="true" /&gt;      
+                  &lt;ClusterListener         className="org.apache.catalina.cluster.session.ClusterSessionListener" /&gt;
+                  &lt;ClusterListener         className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" /&gt;
+                  &lt;Deployer                className="org.apache.catalina.cluster.deploy.FarmWarDeployer"
+                                            tempDir="${catalina.base}/war-temp"
+                                          deployDir="${catalina.base}/war-deploy/"
+                                           watchDir="${catalina.base}/war-listen/"
+                                       watchEnabled="true"/&gt;
+                  &lt;/Cluster&gt;
+            &lt;/Host&gt;
+        &lt;/Engine&gt;
+    &lt;/Service&gt;
+&lt;/Server&gt;
+</source>
+</p>
+</section>
+
+<section name="Cluster Configuration for ReplicationTransmitter">
+<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>replicationMode</td>
+    <td>replication mode (<em>synchronous</em>, <em>pooled</em>, <em>asynchronous</em> or <em>fastasyncqueue</em>)
+    </td>
+    <td><code>pooled</code></td>
+  </tr>
+
+  <tr>
+    <td>processSenderFrequency</td>
+    <td>Control the sender keepalive status and drop sender socket connection after timeout is reached.
+    Check every processSenderFrequency value engine background ticks.
+    </td>
+    <td><code>2</code></td>
+  </tr>
+
+  <tr>
+    <td>compress</td>
+    <td>compress bytes before sending (consume memory, but reduce network traffic - GZIP)</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>ackTimeout</td>
+    <td>acknowledge timeout and only usefull it waitForAck is true</td>
+    <td><code>15000</code></td>
+  </tr>
+  
+  <tr>
+    <td>waitForAck</td>
+    <td>Wait for ack after data send</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>autoConnect</td>
+    <td>is sender disabled, fork a new socket</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>doTransmitterProcessingStats</td>
+    <td>create processing time stats</td>
+    <td><code>false</code></td>
+  </tr>
+</table>
+</p>
+<p>
+Example to get statistic information, wait for ack at every message send and transfer at compressed mode<br/>
+<source>
+    &lt;Sender
+      className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+      replicationMode="fastasyncqueue"
+      compress="true"
+      doTransmitterProcessingStats="true"
+      ackTimeout="15000"
+      waitForAck="true"
+      autoConnect="false"/&gt;
+</source>
+</p>  
+</section>
+     
+<section name="Cluster Configuration for ReplicationTransmitter (fastayncqueue - mode)">
+<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>keepAliveTimeout</td>
+    <td>active socket keep alive timeout</td>
+    <td><code>60000</code></td>
+  </tr>  
+
+  <tr>
+    <td>keepAliveMaxRequestCount</td>
+    <td>max request over this socket</td>
+    <td><code>-1</code></td>
+  </tr>  
+
+  <tr>
+    <td>doProcessingStats</td>
+    <td>create Processing time stats</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>doWaitAckStats</td>
+    <td>create waitAck time stats</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>resend</td>
+    <td>resend message after failure, can overwrite at message</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>queueDoStats</td>
+    <td>activated queue stats</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>queueCheckLock</td>
+    <td>check to lost locks</td>
+    <td><code>false</code></td>
+  </tr>
+  <tr>
+    <td>queueAddWaitTimeout</td>
+    <td>queue add wait time (tomcat connector thread waits)</td>
+    <td><code>10000</code></td>
+  </tr>
+  <tr>
+    <td>queueRemoveWaitTimeout</td>
+    <td>queue remove wait time (queue thread waits)</td>
+    <td><code>30000</code></td>
+  </tr>
+  
+  <tr>
+    <td>maxQueueLength</td>
+    <td>max queue length (default without limit)</td>
+    <td><code>-1</code></td>
+  </tr>
+  
+  <tr>
+    <td>threadPriority</td>
+    <td>change queue thread priority (1-10 ; 5 is normal)</td>
+    <td><code>5</code></td>
+  </tr>
+</table>
+  
+</p>
+<p>
+Example to get a lot of statistic information and no wait for ACK<br/>
+<source>
+    &lt;Sender
+      className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+      replicationMode="fastasyncqueue"
+      doTransmitterProcessingStats="true"
+      doProcessingStats="true"
+      queueTimeWait="true"
+      queueDoStats="true"
+      queueCheckLock="true"
+      waitForAck="false"
+      autoConnect="false"
+      keepAliveTimeout="320000"
+      keepAliveMaxRequestCount="-1"/&gt;
+</source>
+</p>  
+</section>
+
+<section name="Cluster Configuration for ReplicationTransmitter ( asynchronous - mode)">
+<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>keepAliveTimeout</td>
+    <td>active socket keep alive timeout</td>
+    <td><code>60000</code></td>
+  </tr>  
+
+  <tr>
+    <td>keepAliveMaxRequestCount</td>
+    <td>max request over this socket</td>
+    <td><code>-1</code></td>
+  </tr>  
+
+  <tr>
+    <td>doProcessingStats</td>
+    <td>create Processing time stats</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>doWaitAckStats</td>
+    <td>create waitAck time stats</td>
+    <td><code>false</code></td>
+  </tr>
+  
+  <tr>
+    <td>resend</td>
+    <td>resend message after failure, can overwrite at message</td>
+    <td><code>false</code></td>
+  </tr>
+
+</table>
+</p>
+<p>
+Example to get a processing statistic information, resend after failure and wait for ACK<br/>
+<source>
+    &lt;Sender
+      className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+      replicationMode="asynchronous"
+      doProcessingStats="true"
+      doWaitAckStats="true"
+      waitForAck="true"
+      ackTimeout="30000"
+      resend="true"
+      keepAliveTimeout="320000"
+      keepAliveMaxRequestCount="-1"/&gt;
+</source>
+</p>  
+</section>
+    
+<section name="Cluster Configuration for ReplicationTransmitter ( synchronous - mode)">
+<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>keepAliveTimeout</td>
+    <td>active socket keep alive timeout</td>
+    <td><code>60000</code></td>
+  </tr>  
+
+  <tr>
+    <td>keepAliveMaxRequestCount</td>
+    <td>max request over this socket</td>
+    <td><code>-1</code></td>
+  </tr>  
+
+  <tr>
+    <td>doProcessingStats</td>
+    <td>create Processing time stats</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>doWaitAckStats</td>
+    <td>create waitAck time stats</td>
+    <td><code>true</code></td>
+  </tr>
+
+  <tr>
+    <td>resend</td>
+    <td>resend message after failure, can overwrite at message</td>
+    <td><code>false</code></td>
+  </tr>
+
+</table>
+  
+</p>
+<p>
+Example to get a no processing statistic information, no wait for ACK, after 10000 request renew socket and autoconnect before first request is send.<br/>
+<source>
+    &lt;Sender
+      className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+      replicationMode="synchronous"
+      autoConnect="true"
+      keepAliveTimeout="-1"
+      keepAliveMaxRequestCount="100000"/&gt;
+</source>
+</p>  
+</section>
+
+<section name="Cluster Configuration for ReplicationTransmitter ( pooled - mode)">
+<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>keepAliveTimeout</td>
+    <td>active socket keep alive timeout</td>
+    <td><code>60000</code></td>
+  </tr>  
+
+  <tr>
+    <td>keepAliveMaxRequestCount</td>
+    <td>max request over this socket</td>
+    <td><code>-1</code></td>
+  </tr>  
+
+  <tr>
+    <td>maxPoolSocketLimit</td>
+    <td>max pooled sockets (Sender Sockets)</td>
+    <td><code>25</code></td>
+  </tr>
+  
+  <tr>
+    <td>resend</td>
+    <td>resend message after failure, can overwrite at message</td>
+    <td><code>false</code></td>
+  </tr>
+  
+</table>
+  
+</p>
+<p>
+Example to get a no processing statistic information, wait for ACK, after 10000 request renew socket, only 10 SockerSender available and autoconnect before first request is send.<br/>
+<source>
+    &lt;Sender
+      className="org.apache.catalina.cluster.tcp.ReplicationTransmitter"
+      replicationMode="pooled"
+      autoConnect="true"
+      maxPoolSocketLimit="10"
+      keepAliveTimeout="-1"
+      keepAliveMaxRequestCount="10000"
+      waitForAck="true" /&gt;
+</source>
+</p>  
+</section>
+
+<section name="Cluster Configuration for ReplicationTransmitter ( DeltaManager Attribute)">
+<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>expireSessionsOnShutdown</td>
+    <td>When server stopped, expire all sessions also at backup nodes (only for testing)</td>
+    <td><code>false</code></td>
+  </tr>
+
+  <tr>
+    <td>maxActiveSessions</td>
+    <td>Number of active sessions. (Default is no limit)</td>
+    <td><code>-1</code></td>
+  </tr>  
+
+  <tr>
+    <td>notifyListenersOnReplication</td>
+    <td>Notify application session listener to session creation 
+    and expiring events at backup nodes</td>
+    <td><code>true</code></td>
+  </tr>
+
+  <tr>
+    <td>notifySessionListenersOnReplication</td>
+    <td>Notify application session listener to attribute changes at backup nodes</td>
+    <td><code>true</code></td>
+  </tr>
+
+  <tr>
+    <td>stateTransferTimeout</td>
+    <td>Timeout that session state transfer is complete. Is attribute <code>stateTransferTimeout == -1</code> 
+        then application wait that other node send the complete session state</td>
+    <td><code>60</code></td>
+  </tr>
+  
+  <tr>
+    <td>sendAllSessions</td>
+    <td>Flag to send sessions as splited blocks</td>
+    <td><code>true</code></td>
+  </tr>
+
+  <tr>
+    <td>sendAllSessionsSize</td>
+    <td>Number of serialize sessions inside a send block session message. Only useful when <code>sendAllSessions==false</code></td>
+    <td><code>1000</code></td>
+  </tr>
+
+  <tr>
+    <td>sendAllSessionsWaitTime</td>
+    <td>wait time between two session send blocks.</td>
+    <td><code>2000</code></td>
+  </tr>
+
+  <tr>
+    <td>sendClusterDomainOnly</td>
+    <td>Send all session messages only to member inside same cluster domain 
+        (value od Membership attribute mcastClusterDomain). Also don't handle
+        session messages from other domains.</td>
+    <td><code>true</code></td>
+  </tr>  
+
+  <tr>
+    <td>stateTimestampDrop</td>
+    <td>DeltaManager queued Sessions messages when send GET_ALL_SESSION to other node.
+    with stateTimestampDrop all messages before state transfer message creation date (find session) are dropped.
+    Only other GET_ALL_SESSION events are handle with date before state transfer message.</td>
+    <td><code>true</code></td>
+  </tr>  
+  
+</table>
+  
+</p>
+<p>
+Example send all sessions at separate blocks. Serialize and send 100 session inside one block.
+Wait maximale two minutes before the complete backup sessions are loaded inside tomcat boot process.
+Between send blocks wait 5 secs to transfers the session block to other node. This save memory
+when you use the async modes with queues.<br/>
+<source>
+    &lt;Cluster className="org.apache.catalina.tcp.SimpleTcpCluster"
+      managerClassName="org.apache.catalina.cluster.session.DeltaManager"
+      manager.stateTransferTimeout="120"
+      manager.sendAllSessions="false"
+      manager.sendAllSessionsSize="100"
+      manager.sendAllSessionsWaitTime="5000"
+      "/&gt;
+</source>
+</p>
+<p>
+<b>Note:</b><br/>
+As <em>Cluster.defaultMode=true</em> you can configure the manager attributes with prefix <em>manager.</em>. 
+<br/>
+<b>Note:</b><br/>
+With <em>Cluster.setProperty(&lt;String&gt;,&lt;String&gt;)</em> you can modify 
+attributes for all register managers. The method exists as MBeans operation.
+</p>
+</section>
+
+<section name="Bind session after crash to failover node">
+<p>
+As you configure more then two nodes at same cluster for backup, most loadbalancer
+send don't all your requests after failover to the same node.
+</p>
+<p> 
+The JvmRouteBinderValve handle tomcat jvmRoute takeover using mod_jk module after node
+failure. After a node crashed the next request going to other cluster node. The JvmRouteBinderValve 
+now detect the takeover and rewrite the jsessionid
+information to the backup cluster node. After the next response all client
+request goes direct to the backup node. The change sessionid send also to all
+other cluster nodes. Well, now the session stickyness work directly to the
+backup node, but traffic don't go back too restarted cluster nodes!<br/>
+As jsessionid was created by cookie, the change JSESSIONID cookie resend with next response.
+</p>
+<p>
+You must add JvmRouteBinderValve and the corresponding cluster message listener JvmRouteSessionIDBinderListener.
+As you add the new listener you must also add the default ClusterSessionListener that receiver the normal cluster messages.
+
+<source>
+&lt;Cluster className="org.apache.catalina.tcp.SimpleTcpCluster" &gt;
+...
+     &lt;Valve className="org.apache.catalina.cluster.session.JvmRouteBinderValve"
+               enabled="true" sessionIdAttribute="takeoverSessionid"/&gt;      
+     &lt;ClusterListener className="org.apache.catalina.cluster.session.JvmRouteSessionIDBinderListener" /&gt;
+     &lt;ClusterListener className="org.apache.catalina.cluster.session.ClusterSessionListener" /&gt;
+...
+&lt;Cluster&gt;
+</source>
+</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 attribuite 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>
+
+</section>
+
+</section>
+
+
+<section name="Monitoring your Cluster with JMX">
+<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:
+<source>
+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
+</source>
+</p>
+<p>Activate JMX with JDK 1.4:
+<ol>
+<li>Install the compat package</li>
+<li>Install the mx4j-tools.jar at common/lib (use the same mx4j version as your tomcat release)</li>
+<li>Configure a MX4J JMX HTTP Adaptor at your AJP Connector<p></p>
+<source>
+&lt;Connector port="${AJP.PORT}" 
+   handler.list="mx"
+   mx.enabled="true" 
+   mx.httpHost="${JMX.HOST}" 
+   mx.httpPort="${JMX.PORT}" 
+   protocol="AJP/1.3" /&gt;
+</source>
+</li>
+<li>Start your tomcat and look with your browser to http://${JMX.HOST}:${JMX.PORT}</li>
+<li>With the connector parameter <code>mx.authMode="basic" mx.authUser="tomcat" mx.authPassword="strange"</code> you can control the access!</li>
+</ol>
+</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>ClusterSender</td>
+    <td>Configuration and stats of the sender infrastructure</td>
+    <td><code>type=ClusterSender</code></td>
+    <td><code>type=ClusterSender,host=${HOST}</code></td>
+  </tr>
+  <tr>
+    <td>ClusterReceiver</td>
+    <td>Configuration and stats of the recevier infrastructure</td>
+    <td><code>type=ClusterReceiver</code></td>
+    <td><code>type=ClusterReceiver,host=${HOST}</code></td>
+  </tr>
+
+  <tr>
+    <td>ClusterMembership</td>
+    <td>Configuration and stats of the membership infrastructure</td>
+    <td><code>type=ClusterMembership</code></td>
+    <td><code>type=ClusterMembership,host=${HOST}</code></td>
+  </tr>
+
+  <tr>
+    <td>IDataSender</td>
+    <td>For every cluster member it exist a sender mbeans. 
+    It exists speziall MBeans to all replication modes</td>
+    <td><code>type=IDataSender,
+        senderAddress=${MEMBER.SENDER.IP},
+        senderPort=${MEMBER.SENDER.PORT}</code></td>
+    <td><code>type=IDataSender,host=${HOST},
+        senderAddress=${MEMBER.SENDER.IP},
+        senderPort=${MEMBER.SENDER.PORT}</code></td>
+  </tr>
+  <tr>
+    <td>DeltaManager</td>
+    <td>This manager control the sessions and handle session replication </td>
+    <td><code>type=Manager,path=${APP.CONTEXT.PATH}, host=${HOST}</code></td>
+    <td><code>type=Manager,path=${APP.CONTEXT.PATH}, host=${HOST}</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,
+              path=${APP.CONTEXT.PATH}</code></td>
+    <td><code>type=Valve,name=JvmRouteBinderValve,host=${HOST},
+              path=${APP.CONTEXT.PATH}</code></td>
+  </tr>
+
+</table>
+</p>
+</section>
+
+<section name="FAQ">
+<p>Please see <a href="http://tomcat.apache.org/faq/cluster.html">the clustering section of the FAQ</a>.</p>
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/config/ajp.xml b/webapps/docs/config/ajp.xml
new file mode 100644 (file)
index 0000000..7071526
--- /dev/null
@@ -0,0 +1,297 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="ajp.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <author email="arjaquith@mindspring.com">Andrew R. Jaquith</author>
+    <title>The AJP Connector</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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 5 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</li>
+<li>mod_proxy on Apache httpd 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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+  <p>All implementations of <strong>Connector</strong>
+  support the following attributes:</p>
+
+  <attributes>
+
+    <attribute name="allowTrace" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="emptySessionPath" required="false">
+      <p>If set to <code>true</code>, all paths for session cookies will be set
+      to <code>/</code>. This can be useful for portlet specification implementations,
+      but will greatly affect performance if many applications are accessed on a given
+      server by the client.
+      If not specified, this attribute is set to <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="enableLookups" required="false">
+      <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 enabled.</p>
+    </attribute>
+
+    <attribute name="maxPostSize" required="false">
+      <p>The maximum size in bytes of the POST which will be handled by
+      the container FORM URL parameter parsing. The feature can be disabled by
+      setting this attribute to a value less than or equal to 0.
+      If not specified, this attribute is set to 2097152 (2 megabytes).</p>
+    </attribute>
+
+    <attribute name="maxSavePostSize" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="protocol" required="false">
+      <p>This attribute value must be <code>AJP/1.3</code> to use the AJP
+      handler.</p>
+    </attribute>
+
+    <attribute name="proxyName" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="proxyPort" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="redirectPort" required="false">
+      <p>If this <strong>Connector</strong> is supporting non-SSL
+      requests, and a request is received for which a matching
+      <code>&lt;security-constraint&gt;</code> requires SSL transport,
+      Catalina will automatically redirect the request to the port
+      number specified here.</p>
+    </attribute>
+
+    <attribute name="request.registerRequests" required="false">
+      <p>This attribute controls request registration for JMX monitoring
+      of the Connector.  It is enabled by default, but may be turned
+      it off to save a bit of memory.</p>
+    </attribute>
+
+    <attribute name="scheme" required="false">
+      <p>Set this attribute to the name of the protocol you wish to have
+      returned by calls to <code>request.getScheme()</code>.  For
+      example, you would set this attribute to "<code>https</code>"
+      for an SSL Connector.  The default value is "<code>http</code>".
+      See <a href="#SSL Support">SSL Support</a> for more information.</p>
+    </attribute>
+
+    <attribute name="secure" required="false">
+      <p>Set this attribute to <code>true</code> if you wish to have
+      calls to <code>request.isSecure()</code> to return <code>true</code>
+      for requests received by this Connector (you would want this on an
+      SSL Connector).  The default value is <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="URIEncoding" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="useBodyEncodingForURI" required="false">
+      <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 explicitely set using
+      Request.setCharacterEncoding method was also used for the parameters from
+      the URL. The default value is <code>false</code>.
+      </p>
+    </attribute>
+
+    <attribute name="useIPVHosts" required="false">
+      <p>Set this attribute to <code>true</code> to cause Tomcat to use
+      the ServerName passed by the native web server to determine the Host
+      to send the request to.  The default value is <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="xpoweredBy" required="false">
+      <p>Set this attribute to <code>true</code> to cause Tomcat to advertise
+      support for the Srevlet specification using the header recommended in the
+      specification.  The default value is <code>false</code>.</p>
+    </attribute>
+
+  </attributes>
+
+  </subsection>
+
+  <subsection name="Standard Implementation">
+
+  <p>To use AJP, you
+  must specify the protocol attribute (see above).</p>
+
+  <p><strong>This implementation supports the AJP 1.3 protocol.</strong></p>
+
+  <p>It supports the following additional attributes (in addition to the
+  common attributes listed above):</p>
+
+  <attributes>
+
+    <attribute name="address" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="backlog" required="false">
+      <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 10.</p>
+    </attribute>
+
+    <attribute name="bufferSize" required="false">
+      <p>The size of the output buffer to use.  If less than or equal to zero,
+         then output buffering is disabled.  The default value is -1
+         (i.e. buffering disabled)</p>
+    </attribute>
+
+    <attribute name="connectionTimeout" required="false">
+      <p>The number of milliseconds this <strong>Connector</strong> will wait,
+      after accepting a connection, for the request URI line to be
+      presented.  The default value is infinite (i.e. no timeout).</p>
+    </attribute>
+
+    <attribute name="minProcessors" required="false">
+      <strong>deprecated</strong>
+      <p>The minimum number of processors to start at initialization time.
+      If not specified, this atttribute is set to 5.</p>
+    </attribute>
+
+    <attribute name="maxProcessors" required="false">
+      <strong>deprecated</strong>
+      <p>The maximum number of processors allowed. This should be
+      set to a value that is greater than or equal to the maximum number
+      of concurrent connections the remote web server can open to Tomcat 
+      simultaneously. For example, if the web server is Apache 1.x or 2.x
+      Tomcat's <code>maxProcessors</code> should be set to the 
+      value of Apache's <code>maxClients</code> directive.</p>
+      <p>A <code>maxProcessors</code> value of zero (0) signifies that 
+      the number of processors is unlimited. If not specified, this
+      atttribute defaults to 20.</p>
+     </attribute>
+
+    <attribute name="maxSpareThreads" required="false">
+      <p>The maximum number of unused request processing threads that
+      will be allowed to exist until the thread pool starts stopping the
+      unnecessary threads.  The default value is 50.</p>
+    </attribute>
+
+    <attribute name="maxThreads" required="false">
+      <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.</p>
+    </attribute>
+
+    <attribute name="minSpareThreads" required="false">
+      <p>The number of request processing threads that will be created
+      when this <strong>Connector</strong> is first started.  The connector
+      will also make sure it has the specified number of idle processing
+      threads available. This attribute should be set to a value smaller
+      than that set for <code>maxThreads</code>.  The default value is 4.</p>
+    </attribute>
+
+    <attribute name="port" required="true">
+      <p>The TCP port number on which this <strong>Connector</strong>
+      will create a server socket and await incoming connections.  Your
+      operating system will allow only one server application to listen
+      to a particular port number on a particular IP address.</p>
+    </attribute>
+
+    <attribute name="tcpNoDelay" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="tomcatAuthentication" required="false">
+      <p>If set to <code>true</code>, the authetication will be done in Tomcat. 
+      Otherwise, the authenticated principal will be propagated from the native
+      webaserver and used for authorization in Tomcat.  
+      The default value is <code>true</code>.</p>
+    </attribute>
+
+  </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Nested Components">
+
+  <p>None at this time.</p>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/config/context.xml b/webapps/docs/config/context.xml
new file mode 100644 (file)
index 0000000..77857eb
--- /dev/null
@@ -0,0 +1,778 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="context.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Context Container</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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://java.sun.com/products/servlet/download.html">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
+  in the <em>web application deployment descriptor</em> file (which MUST
+  be located at <code>/WEB-INF/web.xml</code> within the web app's
+  directory hierarchy).</p>
+
+  <p>You may define as many <strong>Context</strong> elements as you
+  wish.  Each such Context MUST have a unique
+  context path, which is defined by the <code>path</code> attribute.
+  In addition, you MUST define a Context 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>
+
+  <p>In addition to nesting <strong>Context</strong> elements inside a
+  <a href="host.html">Host</a> element, you can also store them:</p>
+  <ul>
+  <li>in the individual <code>$CATALINA_HOME/conf/context.xml</code> file: 
+  the Context element information will be loaded by all webapps</li>
+  <li>in the individual 
+  <code>$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml.default</code>
+  file: the Context element information will be loaded by all webapps of that
+  host</li>
+  <li>in individual files (with a ".xml" extension) in the 
+  <code>$CATALINA_HOME/conf/[enginename]/[hostname]/</code> directory</li>
+  <li>if the previous file was not found for this application, in individual file
+  at <code>/META-INF/context.xml</code> inside the application files</li>
+  </ul>
+  <p>See
+  <a href="host.html#Automatic Application Deployment">Automatic
+  Application Deployment</a> for more information. This method allows dynamic
+  reconfiguration of the web application, since the main 
+  <code>conf/server.xml</code> file cannot be reloaded without restarting
+  Tomcat. <b>Please note that for tomcat 5, unlike tomcat 4.x, it is NOT
+  recommended to place &lt;Context&gt; elements directly in the server.xml file.</b>
+  Instead, put them in the META-INF/context.xml directory of your WAR file or
+  the conf directory as described above.
+  </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>
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Context</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="backgroundProcessorDelay" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="cookies" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="crossContext" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="docBase" required="true">
+        <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>
+      </attribute>
+
+      <attribute name="override" required="false">
+        <p>Set to <code>true</code> to have explicit settings in this
+        Context element override any corresponding settings in the
+        <a href="defaultcontext.html">DefaultContext</a> element associated
+        with our owning <a href="host.html">Host</a>.  By default, settings
+        in the DefaultContext element will be used.</p>
+      </attribute>
+
+      <attribute name="privileged" required="false">
+        <p>Set to <code>true</code> to allow this context to use container
+        servlets, like the manager servlet.</p>
+      </attribute>
+
+      <attribute name="path" required="false">
+        <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. The value of
+        this field must not be set except when statically defining a Context in
+        server.xml, as it will be infered from the filenames used for either the 
+        .xml context file or the docBase.</p>
+      </attribute>
+
+      <attribute name="reloadable" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="wrapperClass" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <attributes>
+
+      <attribute name="allowLinking" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="antiJARLocking" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="antiResourceLocking" required="false">
+        <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>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>
+      </attribute>
+
+      <attribute name="cacheMaxSize" required="false">
+        <p>Maximum size of the static resource cache in kilobytes. 
+        If not specified, the default value is <code>10240</code>
+        (10 megabytes).</p>
+      </attribute>
+
+      <attribute name="cacheTTL" required="false">
+        <p>Amount of time in milliseconds between cache entries revalidation.
+        If not specified, the default value is <code>5000</code> 
+        (5 seconds).</p>
+      </attribute>
+
+      <attribute name="cachingAllowed" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="caseSensitive" required="false">
+        <p>If the value of this flag is <code>true</code>, all case sensitivity
+        checks will be disabled. If not 
+        specified, the default value of the flag is <code>true</code>.</p>
+        <p><b>NOTE: This flag MUST NOT be set to false on the Windows platform
+        (or any other OS which does not have a case sensitive filesystem),
+        as it will disable case sensitivity checks, allowing JSP source code
+        disclosure, among other security problems.</b></p>
+      </attribute>
+
+      <attribute name="processTlds" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="swallowOutput" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="tldNamespaceAware" required="false">
+        <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.  The
+        default value for this flag is <code>false</code>, and setting it
+        to true will incur a performance penalty.
+        </p>
+      </attribute>
+
+      <attribute name="tldValidation" required="false">
+        <p>If the value of this flag is <code>true</code>, the TLD files
+        will be XML validated on context startup.  The default value for
+        this flag is <code>false</code>, and setting it to true will incur
+        a performance penalty.</p>
+      </attribute>
+
+      <attribute name="unloadDelay" required="false">
+        <p>Amount of ms that the container will wait for servlets to unload.
+        If not specified, the default value of the flag is <code>2000</code> 
+        ms.</p>
+      </attribute>
+
+      <attribute name="unpackWAR" required="false">
+        <p>If true, Tomcat will unpack all compressed web applications before
+        running them.
+        If not specified, the default value is <code>true</code>.</p>
+      </attribute>
+
+      <attribute name="useNaming" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="workDir" required="false">
+        <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_HOME/work</code> will be provided.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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 is is updated. The content of this element
+      must be a string.</li>
+  </ul>
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="Logging">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Access Logs">
+
+    <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>
+
+<source>
+&lt;Context path="/examples" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"
+         prefix="localhost_access_log." suffix=".txt"
+         pattern="common"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+    for more information on the configuration attributes that are
+    supported.</p>
+
+  </subsection>
+
+
+  <subsection name="Automatic Context Configuration">
+
+    <p>If you use the standard <strong>Context</strong> implementation,
+    the following configuration steps occur automtically 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>
+
+  </subsection>
+
+
+  <subsection name="Context Parameters">
+
+    <p>You can configure named values that will be made visible to the
+    web application as servlet context initialization parameters by nesting
+    <code>&lt;Parameter&gt;</code> elements inside this element.  For
+    example, you can create an initialization parameter like this:</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Parameter name="companyName" value="My Company, Incorporated"
+         override="false"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <p>This is equivalent to the inclusion of the following element in the
+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):
+    </p>
+<source>
+&lt;context-param&gt;
+  &lt;param-name&gt;companyName&lt;/param-name&gt;
+  &lt;param-value&gt;My Company, Incorporated&lt;/param-value&gt;
+&lt;/context-param&gt;
+</source>
+    <p>but does <em>not</em> require modification of the deployment descriptor
+    to customize this value.</p>
+
+    <p>The valid attributes for a <code>&lt;Parameter&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="description" required="false">
+        <p>Optional, human-readable description of this context
+        initialization parameter.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the context initialization parameter to be created.</p>
+      </attribute>
+
+      <attribute name="override" required="false">
+        <p>Set this to <code>false</code> if you do <strong>not</strong> want
+        a <code>&lt;context-param&gt;</code> for the same parameter name,
+        found in the web application deployment descriptor, to override the
+        value specified here.  By default, overrides are allowed.</p>
+      </attribute>
+
+      <attribute name="value" required="true">
+        <p>The parameter value that will be presented to the application
+        when requested by calling
+        <code>ServletContext.getInitParameter()</code>.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Environment Entries">
+
+    <p>You can configure named values that will be made visible to the
+    web application as environment entry resources, by nesting
+    <code>&lt;Environment&gt;</code> entries inside this element.  For
+    example, you can create an environment entry like this:</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Environment name="maxExemptions" value="10"
+         type="java.lang.Integer" override="false"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <p>This is equivalent to the inclusion of the following element in the
+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):
+    </p>
+<source>
+&lt;env-entry&gt;
+  &lt;env-entry-name&gt;maxExemptions&lt;/param-name&gt;
+  &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;
+  &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;
+&lt;/env-entry&gt;
+</source>
+    <p>but does <em>not</em> require modification of the deployment descriptor
+    to customize this value.</p>
+
+    <p>The valid attributes for an <code>&lt;Environment&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="description" required="false">
+        <p>Optional, human-readable description of this environment entry.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the environment entry to be created, relative to the
+        <code>java:comp/env</code> context.</p>
+      </attribute>
+
+      <attribute name="override" required="false">
+        <p>Set this to <code>false</code> if you do <strong>not</strong> want
+        an <code>&lt;env-entry&gt;</code> for the same environment entry name,
+        found in the web application deployment descriptor, to override the
+        value specified here.  By default, overrides are allowed.</p>
+      </attribute>
+
+      <attribute name="type" required="true">
+        <p>The fully qualified Java class name expected by the web application
+        for this environment entry.  Must be one of the legal values for
+        <code>&lt;env-entry-type&gt;</code> in the web application deployment
+        descriptor:  <code>java.lang.Boolean</code>,
+        <code>java.lang.Byte</code>, <code>java.lang.Character</code>,
+        <code>java.lang.Double</code>, <code>java.lang.Float</code>,
+        <code>java.lang.Integer</code>, <code>java.lang.Long</code>,
+        <code>java.lang.Short</code>, or <code>java.lang.String</code>.</p>
+      </attribute>
+
+      <attribute name="value" required="true">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Lifecycle Listeners">
+
+    <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
+    it will be notified about the occurrence of the coresponding
+    lifecycle events.  Configuration of such a listener looks like this:</p>
+
+<source>
+&lt;Context path="/examples" ...&gt;
+  ...
+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Request Filters">
+
+    <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 a configured list of "accept" and/or "deny"
+    filters, which are defined using the Regular Expression syntax supported
+    by the <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a>
+    regular expression library.  Requests that come from locations that are
+    not accepted will be rejected with an HTTP "Forbidden" error.
+    Example filter declarations:</p>
+
+<source>
+&lt;Context path="/examples" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"
+         allow="*.mycompany.com,www.yourcompany.com"/&gt;
+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
+         deny="192.168.1.*"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Resource Definitions">
+
+    <p>You can declare the characteristics of the resource
+    to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and
+    <code>&lt;resource-env-ref&gt;</code> elements in the web application
+    deployment descriptor.  You <strong>MUST</strong> also define
+    the needed resource parameters as attributes of the <code>Resource</code> 
+    element, to configure the object factory to be used (if not known to Tomcat 
+    already), and the properties used to configure that object factory.</p>
+
+    <p>For example, you can create a resource definition like this:</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Resource name="jdbc/EmployeeDB" auth="Container"
+            type="javax.sql.DataSource"
+     description="Employees Database for HR Applications"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <p>This is equivalent to the inclusion of the following element in the
+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>
+<source>
+&lt;resource-ref&gt;
+  &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;
+  &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;
+  &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;
+  &lt;res-auth&gt;Container&lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+
+    <p>but does <em>not</em> require modification of the deployment
+    descriptor to customize this value.</p>
+
+    <p>The valid attributes for a <code>&lt;Resource&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="auth" required="false">
+        <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>&lt;resource-ref&gt;</code> element in the web
+        application deployment descriptor, but is optional if the
+        application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>
+      </attribute>
+
+      <attribute name="description" required="false">
+        <p>Optional, human-readable description of this resource.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the resource to be created, relative to the
+        <code>java:comp/env</code> context.</p>
+      </attribute>
+
+      <attribute name="scope" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="type" required="true">
+        <p>The fully qualified Java class name expected by the web
+        application when it performs a lookup for this resource.</p>
+      </attribute>
+
+    </attributes>
+
+
+  </subsection>
+
+
+  <subsection name="Resource Links">
+
+     <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>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;ResourceLink name="linkToGlobalResource"
+            global="simpleValue"
+            type="java.lang.Integer"
+  ...
+&lt;/Context&gt;
+</source>
+
+    <p>The valid attributes for a <code>&lt;ResourceLink&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="global" required="true">
+        <p>The name of the linked global resource in the 
+        global JNDI context.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the resource link to be created, relative to the
+        <code>java:comp/env</code> context.</p>
+      </attribute>
+
+      <attribute name="type" required="true">
+        <p>The fully qualified Java class name expected by the web
+        application when it performs a lookup for this resource link.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+  <subsection name="Transaction">
+
+    <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>&lt;Transaction&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="factory" required="true">
+        <p>The class name for the JNDI object factory.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/engine.xml b/webapps/docs/config/engine.xml
new file mode 100644 (file)
index 0000000..ac4e007
--- /dev/null
@@ -0,0 +1,240 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="engine.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Engine Container</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Engine</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="backgroundProcessorDelay" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="defaultHost" required="true">
+        <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>
+      </attribute>
+
+      <attribute name="jvmRoute" required="false">
+        <p>Identifier which must be used in load balancing scenarios to enable
+        session affinity. The identifier, which must be unique across all
+        Tomcat 5 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 5
+        instance.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>Logical name of this Engine, used in log and error messages.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <attributes>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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 optional nest a <a href="defaultcontext.html">DefaultContext</a>
+  element inside this <strong>Engine</strong> element, to define the default
+  characteristics of web applications that are automatically deployed.</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>
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="Logging">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Access Logs">
+
+    <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>
+
+<source>
+&lt;Engine name="Standalone" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"
+         prefix="catalina_access_log." suffix=".txt"
+         pattern="common"/&gt;
+  ...
+&lt;/Engine&gt;
+</source>
+
+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+    for more information on the configuration attributes that are
+    supported.</p>
+
+  </subsection>
+
+
+  <subsection name="Lifecycle Listeners">
+
+    <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 coresponding
+    lifecycle events.  Configuration of such a listener looks like this:</p>
+
+<source>
+&lt;Engine name="Standalone" ...&gt;
+  ...
+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;
+  ...
+&lt;/Engine&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Request Filters">
+
+    <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 a configured list of "accept" and/or "deny"
+    filters, which are defined using the Regular Expression syntax supported
+    by the <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a>
+    regular expression library.  Requests that come from locations that are
+    not accepted will be rejected with an HTTP "Forbidden" error.
+    Example filter declarations:</p>
+
+<source>
+&lt;Engine name="Standalone" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"
+         allow="*.mycompany.com,www.yourcompany.com"/&gt;
+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
+         deny="192.168.1.*"/&gt;
+  ...
+&lt;/Engine&gt;
+</source>
+
+  <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>
+
+  </subsection>
+
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/globalresources.xml b/webapps/docs/config/globalresources.xml
new file mode 100644 (file)
index 0000000..2e20786
--- /dev/null
@@ -0,0 +1,254 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="globalresources.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>The GlobalNamingResources Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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">&lt;ResourceLink&gt;</a> elements.
+  </p>
+
+</section>
+
+
+<section name="Attributes">
+
+</section>
+
+
+<section name="Nested Components">
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="Environment Entries">
+
+  <p>You can configure named values that will be made visible to all
+    web applications as environment entry resources by nesting
+    <code>&lt;Environment&gt;</code> entries inside this element. For
+    example, you can create an environment entry like this:</p>
+<source>
+&lt;GlobalNamingResources ...&gt;
+  ...
+  &lt;Environment name="maxExemptions" value="10"
+         type="java.lang.Integer" override="false"/&gt;
+  ...
+&lt;/GlobalNamingResources&gt;
+</source>
+
+    <p>This is equivalent to the inclusion of the following element in the
+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):
+    </p>
+<source>
+&lt;env-entry&gt;
+  &lt;env-entry-name&gt;maxExemptions&lt;/env-entry-name&gt;
+  &lt;env-entry-value&gt;10&lt;/env-entry-value&gt;
+  &lt;env-entry-type&gt;java.lang.Integer&lt;/env-entry-type&gt;
+&lt;/env-entry&gt;
+</source>
+    <p>but does <em>not</em> require modification of the deployment descriptor
+    to customize this value.</p>
+
+    <p>The valid attributes for an <code>&lt;Environment&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="description" required="false">
+        <p>Optional, human-readable description of this environment entry.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the environment entry to be created, relative to the
+        <code>java:comp/env</code> context.</p>
+      </attribute>
+
+      <attribute name="override" required="false">
+        <p>Set this to <code>false</code> if you do <strong>not</strong> want
+        an <code>&lt;env-entry&gt;</code> for the same environment entry name,
+        found in the web application deployment descriptor, to override the
+        value specified here.  By default, overrides are allowed.</p>
+      </attribute>
+
+      <attribute name="type" required="true">
+        <p>The fully qualified Java class name expected by the web application
+        for this environment entry.  Must be one of the legal values for
+        <code>&lt;env-entry-type&gt;</code> in the web application deployment
+        descriptor:  <code>java.lang.Boolean</code>,
+        <code>java.lang.Byte</code>, <code>java.lang.Character</code>,
+        <code>java.lang.Double</code>, <code>java.lang.Float</code>,
+        <code>java.lang.Integer</code>, <code>java.lang.Long</code>,
+        <code>java.lang.Short</code>, or <code>java.lang.String</code>.</p>
+      </attribute>
+
+      <attribute name="value" required="true">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Resource Definitions">
+
+    <p>You can declare the characteristics of resources
+    to be returned for JNDI lookups of <code>&lt;resource-ref&gt;</code> and
+    <code>&lt;resource-env-ref&gt;</code> elements in the web application
+    deployment descriptor by defining them in this element and then linking 
+    them with <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> 
+    elements
+    in the <code><strong>&lt;Context&gt;</strong></code> element.  
+
+    You <strong>MUST</strong> also define any other needed parameters using
+    attributes on the Resource element, to configure
+    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>
+<source>
+&lt;GlobalNamingResources ...&gt;
+  ...
+  &lt;Resource name="jdbc/EmployeeDB" auth="Container"
+            type="javax.sql.DataSource"
+     description="Employees Database for HR Applications"/&gt;
+  ...
+&lt;/GlobalNamingResources&gt;
+</source>
+
+    <p>This is equivalent to the inclusion of the following element in the
+    web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>
+<source>
+&lt;resource-ref&gt;
+  &lt;description&gt;Employees Database for HR Applications&lt;/description&gt;
+  &lt;res-ref-name&gt;jdbc/EmployeeDB&lt;/res-ref-name&gt;
+  &lt;res-ref-type&gt;javax.sql.DataSource&lt;/res-ref-type&gt;
+  &lt;res-auth&gt;Container&lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+
+    <p>but does <em>not</em> require modification of the deployment
+    descriptor to customize this value.</p>
+
+    <p>The valid attriutes for a <code>&lt;Resource&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="auth" required="false">
+        <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>&lt;resource-ref&gt;</code> element in the web
+        application deployment descriptor, but is optional if the
+        application uses a <code>&lt;resource-env-ref&gt;</code> instead.</p>
+      </attribute>
+
+      <attribute name="description" required="false">
+        <p>Optional, human-readable description of this resource.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>The name of the resource to be created, relative to the
+        <code>java:comp/env</code> context.</p>
+      </attribute>
+
+      <attribute name="scope" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="type" required="true">
+        <p>The fully qualified Java class name expected by the web
+        application when it performs a lookup for this resource.</p>
+      </attribute>
+
+    </attributes>
+
+
+  </subsection>
+
+  <subsection name="Resource Links">
+    <p>Use <a href="context.html#Resource Links">&lt;ResourceLink&gt;</a> 
+    elements to link resources from the global context into 
+    per-web-application contexts. Here is an example of making a custom 
+    factory available to all applications in the server, based on the example 
+    definition in the 
+    <a href="../jndi-resource-howto.html#Generic JavaBean Resources">
+    JNDI Resource HOW-TO</a>:
+    </p>
+
+    <source>
+      <![CDATA[
+        <DefaultContext>
+          <ResourceLink 
+            name="bean/MyBeanFactory"
+            global="bean/MyBeanFactory"
+            type="com.mycompany.MyBean"
+          />
+        </DefaultContext>
+      ]]>
+    </source>
+
+   </subsection>
+
+  <subsection name="Transaction">
+
+    <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>&lt;Transaction&gt;</code> element
+    are as follows:</p>
+
+    <attributes>
+
+      <attribute name="factory" required="true">
+        <p>The class name for the JNDI object factory.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/host.xml b/webapps/docs/config/host.xml
new file mode 100644 (file)
index 0000000..9fd51e2
--- /dev/null
@@ -0,0 +1,542 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="host.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>The Host Container</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <p>The <strong>Host</strong> element represents a <em>virtual host</em>,
+  which is an association of a network name for a server (such as
+  "www.mycompany.com" with the particular server on which Catalina is
+  running.  In order to be effective, this name must be registered in the
+  <em>Domain Name Service</em> (DNS) server that manages the Internet
+  domain you belong to - contact your Network Administrator for more
+  information.</p>
+
+  <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>
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Host</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="appBase" required="true">
+        <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 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 to be deployed automatically.</p>
+      </attribute>
+
+      <attribute name="autoDeploy" required="false">
+        <p>This flag value indicates if new web applications, dropped in to
+        the <code>appBase</code> directory while Tomcat is running, should
+        be automatically deployed.  The flag's value defaults to true.  See
+        <a href="#Automatic Application Deployment">Automatic Application
+        Deployment</a> for more information.</p>
+      </attribute>
+
+      <attribute name="backgroundProcessorDelay" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="deployOnStartup" required="false">
+        <p>This flag value indicates if web applications from this host should
+        be automatically deployed by the host configurator.
+        The flag's value defaults to true.  See
+        <a href="#Automatic Application Deployment">Automatic Application
+        Deployment</a> for more information.</p>
+      </attribute>
+
+      <attribute name="name" required="true">
+        <p>Network name of this virtual host, as registered in your
+        <em>Domain Name Service</em> server.  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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <attributes>
+
+      <attribute name="deployXML" required="false">
+        <p>Set to <code>false</code> if you want to disable parsing the context.xml
+        file embedded inside the application (located at <code>/META-INF/context.xml</code>). 
+        Security consious 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 put it in 
+        <code>$CATALINA_HOME/conf/[enginename]/[hostname]/</code>.
+        The flag's value defaults to <code>true</code>.</p>
+      </attribute>
+
+      <attribute name="errorReportValveClass" required="false">
+        <p>Java class name of the error reporting valve which will be used
+        by this Host. The responsability 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>
+      </attribute>
+
+      <attribute name="unpackWARs" required="false">
+        <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.  See
+        <a href="#Automatic Application Deployment">Automatic Application
+        Deployment</a> for more information.</p>
+      </attribute>
+
+      <attribute name="workDir" required="false">
+        <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_HOME/work</code> will be provided.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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.  In addition, you can nest a
+  single <a href="defaultcontext.html">DefaultContext</a> element that defines
+  default values for subsequently deployed web applications.</p>
+
+  <p>You can optional nest a <a href="defaultcontext.html">DefaultContext</a>
+  element inside this <strong>Host</strong> element, to define the default
+  characteristics of web applications that are automatically deployed.</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>
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="Logging">
+
+    <p>A host is associated with the 
+       <code>org.apache.catalina.core.ContainerBase.[enginename].[hostname]</code>
+       log category.  Note that the brackets are actuall part of the name,
+       don't omit them.</p>
+
+  </subsection>
+
+
+  <subsection name="Access Logs">
+
+    <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>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.AccessLogValve"
+         prefix="localhost_access_log." suffix=".txt"
+         pattern="common"/&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+    for more information on the configuration attributes that are
+    supported.</p>
+
+  </subsection>
+
+
+  <subsection name="Automatic Application Deployment">
+
+    <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 
+        <code>$CATALINA_HOME/conf/[engine_name]/[host_name]</code> directory is
+        assumed to contain a
+        <a href="context.html">Context</a> element (and its associated
+        subelements) for a single web application.  The <code>docBase</code>
+        attribute of this <code>&lt;Context&gt;</code> element will typically
+        be the absolute pathname to a web application directory, or the
+        absolute pathname of a web application archive (WAR) file (which
+        will not be expanded).</li>
+    <li>Any web application archive file within the application base (appBase)
+        directory that does not have a corresponding
+        directory of the same name (without the ".war" extension) will be
+        automatically expanded, unless the <code>unpackWARs</code> property
+        is set to <code>false</code>.  If you redeploy an updated WAR file,
+        be sure to delete the expanded directory when restarting Tomcat, so
+        that the updated WAR file will be re-expanded (note that the auto
+        deployer, if enabled, will automatically expand the updated WAR file
+        once the previously expanded directory is removed).</li>
+    <li>Any subdirectory within the <em>application base directory</em>
+        that appears to be an unpacked web application (that is, it contains
+        a <code>/WEB-INF/web.xml</code> file) will receive an automatically
+        generated <a href="context.html">Context</a> element, even if this
+        directory is not mentioned in the <code>conf/server.xml</code> file.
+        This generated Context entry will be configured according to the
+        properties set in any <a href="defaultcontext.html">DefaultContext</a>
+        element nested in this Host element.  The context path for this
+        deployed Context will be a slash character ("/") followed by the
+        directory name, unless the directory name is ROOT, in which case
+        the context path will be an empty string ("").</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
+    subdirectories (containing web applications) that are dropped in to the
+    <code>appBase</code> (or 
+    <code>$CATALINA_HOME/conf/[engine_name]/[host_name]</code> in the case of
+    an XML configuration file) directory while Tomcat is running will be
+    automatically deployed, according to the rules described above. The 
+    auto deployer will also track web applications for the following changes:
+    <ul>
+        <li>An update to the WEB-INF/web.xml file will trigger a reload of the
+        web application</li>
+        <li>An update to a WAR which has been expanded will trigger 
+        an undeploy (<strong>with a removal of the expanded webapp</strong>), 
+        followed by a deployment</li>
+        <li>An update to a XML configuration file will trigger an undeploy
+        (without the removal of any expanded directory), followed by 
+        a deployment of the associated web application</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.</p>
+
+    <p>Finally, note that if you are defining contexts explicitly, you should
+    probably turn off automatic application deployment.  Otherwise, your context
+    will be deployed twice each, and that may cause problems for your app.
+    </p>
+
+  </subsection>
+
+
+  <subsection name="Host Name Aliases">
+
+    <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 desireable 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 desireable 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>
+<source>
+&lt;Host name="www.mycompany.com" ...&gt;
+  ...
+  &lt;Alias&gt;mycompany.com&lt;/Alias&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Lifecycle Listeners">
+
+    <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 coresponding
+    lifecycle events.  Configuration of such a listener looks like this:</p>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Listener className="com.mycompany.mypackage.MyListener" ... &gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Request Filters">
+
+    <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 a configured list of "accept" and/or "deny"
+    filters, which are defined using the Regular Expression syntax supported
+    by the <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a>
+    regular expression library.  Requests that come from locations that are
+    not accepted will be rejected with an HTTP "Forbidden" error.
+    Example filter declarations:</p>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.valves.RemoteHostValve"
+         allow="*.mycompany.com,www.yourcompany.com"/&gt;
+  &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
+         deny="192.168.1.*"/&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+  <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>
+
+  </subsection>
+
+
+  <subsection name="Single Sign On">
+
+    <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>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Valve className="org.apache.catalina.authenticator.SingleSignOn"
+         debug="0"/&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="User Web Applications">
+
+    <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>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Listener className="org.apache.catalina.startup.UserConfig"
+            directoryName="public_html"
+            userClass="org.apache.catalina.startup.PasswdUserDatabase"/&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <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>
+
+<source>
+&lt;Host name="localhost" ...&gt;
+  ...
+  &lt;Listener className="org.apache.catalina.startup.UserConfig"
+            directoryName="public_html"
+            homeBase=c:\Homes"
+            userClass="org.apache.catalina.startup.HomesUserDatabase"/&gt;
+  ...
+&lt;/Host&gt;
+</source>
+
+    <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>
+
+<source>
+http://www.mycompany.com:8080/~craigmcc
+</source>
+
+    <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 any <a href="defaultcontext.html">DefaultContext</a>
+        element you have configured for this Host.</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>
+
+  </subsection>
+
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/http.xml b/webapps/docs/config/http.xml
new file mode 100644 (file)
index 0000000..5837471
--- /dev/null
@@ -0,0 +1,473 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="http.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>The HTTP Connector</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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), see
+  <a href="ajp.html">here</a> instead.</p>
+
+  <p>At server startup time, this <strong>Connector</strong> will create a
+  number of request processing threads (based on the value configured for
+  the <code>minSpareThreads</code> attribute).  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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+  <p>All implementations of <strong>Connector</strong>
+  support the following attributes:</p>
+
+  <attributes>
+    <attribute name="allowTrace" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="emptySessionPath" required="false">
+      <p>If set to <code>true</code>, all paths for session cookies will be set
+      to <code>/</code>. This can be useful for portlet specification implementations,
+      but will greatly affect performance if many applications are accessed on a given
+      server by the client.
+      If not specified, this attribute is set to <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="enableLookups" required="false">
+      <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 enabled.</p>
+    </attribute>
+
+    <attribute name="maxPostSize" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="maxSavePostSize" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="protocol" required="false">
+      <p>This attribute value must be <code>HTTP/1.1</code> to use the HTTP
+      handler, which is the default.</p>
+    </attribute>
+
+    <attribute name="proxyName" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="proxyPort" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="redirectPort" required="false">
+      <p>If this <strong>Connector</strong> is supporting non-SSL
+      requests, and a request is received for which a matching
+      <code>&lt;security-constraint&gt;</code> requires SSL transport,
+      Catalina will automatically redirect the request to the port
+      number specified here.</p>
+    </attribute>
+
+    <attribute name="scheme" required="false">
+      <p>Set this attribute to the name of the protocol you wish to have
+      returned by calls to <code>request.getScheme()</code>.  For
+      example, you would set this attribute to "<code>https</code>"
+      for an SSL Connector.  The default value is "<code>http</code>".
+      See <a href="#SSL Support">SSL Support</a> for more information.</p>
+    </attribute>
+
+    <attribute name="secure" required="false">
+      <p>Set this attribute to <code>true</code> if you wish to have
+      calls to <code>request.isSecure()</code> to return <code>true</code>
+      for requests received by this Connector (you would want this on an
+      SSL Connector).  The default value is <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="URIEncoding" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="useBodyEncodingForURI" required="false">
+      <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 explicitely set using
+      Request.setCharacterEncoding method was also used for the parameters from
+      the URL. The default value is <code>false</code>.
+      </p>
+    </attribute>
+
+    <attribute name="useIPVHosts" required="false">
+      <p>Set this attribute to <code>true</code> to cause Tomcat to use
+      the IP address that the request was recieved on to determine the Host
+      to send the request to.  The default value is <code>false</code>.</p>
+    </attribute>
+
+    <attribute name="xpoweredBy" required="false">
+      <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>
+    </attribute>
+
+
+  </attributes>
+
+  </subsection>
+
+  <subsection name="Standard Implementation">
+
+  <p>
+  HTTP supports the following additional attributes (in addition to the
+  common attributes listed above):</p>
+
+  <attributes>
+
+    <attribute name="acceptCount" required="false">
+      <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 10.</p>
+    </attribute>
+
+    <attribute name="address" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="bufferSize" required="false">
+      <p>The size (in bytes) of the buffer to be provided for input
+      streams created by this connector.  By default, buffers of
+      2048 bytes will be provided.</p>
+    </attribute>
+
+    <attribute name="compressableMimeType" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="compression" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="connectionLinger" required="false">
+      <p>The number of milliseconds during which the sockets used by this
+      <strong>Connector</strong> will linger when they are closed.
+      The default value is -1 (socket linger is disabled).</p>
+    </attribute>
+
+    <attribute name="connectionTimeout" required="false">
+      <p>The number of milliseconds this <strong>Connector</strong> will wait,
+      after accepting a connection, for the request URI line to be
+      presented.  The default value is 60000 (i.e. 60 seconds).</p>
+    </attribute>
+
+    <attribute name="disableUploadTimeout" required="false">
+      <p>This flag allows the servlet container to use a different, longer
+      connection timeout while a servlet is being executed, which in the end
+      allows either the servlet a longer amount of time to complete its
+      execution, or a longer timeout during data upload. If not specified,
+      this attribute is set to "true".</p>
+    </attribute>
+
+    <attribute name="maxHttpHeaderSize" required="false">
+      <p>The maximum size of the request and response HTTP header, specified
+      in bytes.
+      If not specified, this attribute is set to 4096 (4 KB).</p>
+    </attribute>
+
+    <attribute name="maxKeepAliveRequests" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="maxSpareThreads" required="false">
+      <p>The maximum number of unused request processing threads that
+      will be allowed to exist until the thread pool starts stopping the
+      unnecessary threads.  The default value is 50.</p>
+    </attribute>
+
+    <attribute name="maxThreads" required="false">
+      <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.</p>
+    </attribute>
+
+    <attribute name="minSpareThreads" required="false">
+      <p>The number of request processing threads that will be created
+      when this <strong>Connector</strong> is first started.  The connector
+      will also make sure it has the specified number of idle processing
+      threads available. This attribute should be set to a value smaller
+      than that set for <code>maxThreads</code>.  The default value is 4.</p>
+    </attribute>
+
+    <attribute name="noCompressionUserAgents" required="false">
+      <p>The value is a comma separated list of regular expressions matching
+      user-agents 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>
+    </attribute>
+
+    <attribute name="port" required="true">
+      <p>The TCP port number on which this <strong>Connector</strong>
+      will create a server socket and await incoming connections.  Your
+      operating system will allow only one server application to listen
+      to a particular port number on a particular IP address.</p>
+    </attribute>
+
+    <attribute name="restrictedUserAgents" required="false">
+      <p>The value is a comma separated list of regular expressions matching
+      user-agents of HTTP clients for which HTTP/1.1 or HTTP/1.0 keep alive
+      should not be used, even if the clients advertise support for these
+      features.
+      The default value is an empty String (regexp matching disabled).</p>
+    </attribute>
+
+    <attribute name="server" required="false">
+      <p>The Server header for the http response.
+         Unless your paranoid, you won't need this feature.
+      </p>
+    </attribute>
+
+    <attribute name="socketBuffer" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="strategy" required="false">
+      <p>The thread pooling strategy which will be used. The default strategy does 
+      not use a master thread, but a more conventional strategy using a 
+      master listener thread can be used by setting "ms" as this attribute's value. 
+      The master strategy will work significantly better using the threadPriority 
+      attribute, which will apply only to the thread which listens on the server socket.
+      This is set to <code>lf</code> by default.
+      </p>
+    </attribute>
+
+    <attribute name="tcpNoDelay" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="threadPriority" required="false">
+      <p>The priority of the request processing threads within the JVM.
+      The default value is <code>java.lang.Thread#NORM_PRIORITY</code>.
+      See the JavaDoc for the java.lang.Thread class for more details on
+      what this priority means.
+      </p>
+    </attribute>
+
+  </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Nested Components">
+
+  <p>None at this time.</p>
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="HTTP/1.1 and HTTP/1.0 Support">
+
+  <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>
+
+  </subsection>
+
+
+  <subsection name="Proxy Support">
+
+  <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>
+
+  </subsection>
+
+
+  <subsection name="SSL Support">
+
+  <p>You can enable SSL support for a particular instance of this
+  <strong>Connector</strong> by setting the <code>secure</code> attribute to
+  <code>true</code>.  In addition, you may need to configure the following
+  attributes:</p>
+
+  <attributes>
+
+    <attribute name="algorithm" required="false">
+      <p>The certificate encoding algorithm to be used.  If not
+      specified, the default value is <code>SunX509</code>.</p>
+    </attribute>
+
+    <attribute name="clientAuth" required="false">
+      <p>Set to <code>true</code> if you want the SSL stack to require a
+      valid certificate chain from the client before
+ accepting a connection.
+      Set to <code>want</code> if you
+ want the SSL stack to request a client
+      Certificate, but
+ not fail if one isn't presented. A <code>false</code>
+      value (which is the default) will not require a certificate chain
+      unless
+ the client requests a resource protected by a security
+      constraint
+ that uses <code>CLIENT-CERT</code> authentication. See the
+      <a href="../ssl-howto.html">SSL HowTo</a> for an example.</p>
+    </attribute>
+
+    <attribute name="keystoreFile" required="false">
+      <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.</p>
+    </attribute>
+
+    <attribute name="keystorePass" required="false">
+      <p>The password used to access the server certificate from the
+      specified keystore file.  The default value is "<code>changeit</code>".
+      </p>
+    </attribute>
+
+    <attribute name="keystoreType" required="false">
+      <p>The type of keystore file to be used for the server certificate.
+      If not specified, the default value is "<code>JKS</code>".</p>
+    </attribute>
+
+    <attribute name="sslProtocol" required="false">
+      <p>The version of the SSL protocol to use.  If not specified,
+      the default is "<code>TLS</code>".</p>
+    </attribute>
+
+    <attribute name="ciphers" required="false">
+      <p>A comma seperated list of the encryption ciphers that may be used.
+      If not specified, then any available cipher may be used.</p>
+    </attribute>
+
+  </attributes>
+
+  <p>For more information, see the
+  <a href="../ssl-howto.html">SSL Configuration HOW-TO</a>.</p>
+
+  </subsection>
+
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/config/index.xml b/webapps/docs/config/index.xml
new file mode 100644 (file)
index 0000000..f94de89
--- /dev/null
@@ -0,0 +1,71 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Overview</title>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+<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 5 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>The configuration element descriptions are organized into the following
+major categories:</p>
+<ul>
+<li><strong>Top Level Elements</strong> - <code>&lt;Server&gt;</code> is the
+    root element of the entire configuration file, while
+    <code>&lt;Service&gt;</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> pacakge) 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>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/config/loader.xml b/webapps/docs/config/loader.xml
new file mode 100644 (file)
index 0000000..a11c3c7
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="loader.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Loader Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Loader</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="delegate" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="reloadable" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <attributes>
+
+      <attribute name="checkInterval" required="false">
+        <p>The number of seconds between checks for modified classes and
+        resources, if <code>reloadable</code> has been set to
+        <code>true</code>.  The default is 15 seconds.</p>
+      </attribute>
+
+      <attribute name="loaderClass" required="false">
+        <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>.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <p>No components may be nested inside a <strong>Loader</strong> element.</p>
+
+</section>
+
+
+<section name="Special Features">
+
+  <subsection name="Logging">
+
+    <p>A loader is associated with the log category based on its classname.</p>
+
+  </subsection>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/manager.xml b/webapps/docs/config/manager.xml
new file mode 100644 (file)
index 0000000..3e8503c
--- /dev/null
@@ -0,0 +1,459 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="manager.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>The Manager Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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.</p>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Manager</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="distributable" required="false">
+        <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>&lt;distributable&gt;</code> element in the web application
+        deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <attributes>
+
+      <attribute name="algorithm" required="false">
+        <p>Name of the <em>Message Digest</em> algorithm used to calculate
+        session identifiers produced by this Manager.  This value must
+        be supported by the <code>java.security.MessageDigest</code> class.
+        If not specified, the default value is "MD5".</p>
+      </attribute>
+
+      <attribute name="entropy" required="false">
+        <p>A String value that is utilized when seeding the random number
+        generator used to create session identifiers for this Manager.
+        If not specified, a semi-useful value is calculated, but a long
+        String value should be specified in security-conscious
+        environments.</p>
+      </attribute>
+
+      <attribute name="maxActiveSessions" required="false">
+        <p>The maximum number of active sessions that will be created by
+        this Manager, or -1 (the default) for no limit.</p>
+      </attribute>
+
+      <attribute name="maxInactiveInterval" required="false">
+        <p>The initial maximum time interval, in seconds, 
+        between client requests before a session is invalidated. A negative value
+        will result in sessions never timing out. If the attribute is not provided,
+        a default of 60 seconds is used.</p>
+        
+        <p>This attribute provides the initial value whenever a 
+        new session is created, but the interval may be dynamically 
+        varied by a servlet via the 
+        <code>setMaxInactiveInterval</code> method of the <code>HttpSession</code> object.</p>
+      </attribute>
+
+      <attribute name="pathname" required="false">
+        <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".  See <a href="#Restart Persistence">Restart
+        Persistence</a> for more information. Restart persistence may be 
+        disabled by setting this attribute to an empty string.</p>
+      </attribute>
+
+      <attribute name="processExpiresFrequency" required="false">
+        <p>Frequency of the session expiration, and related manager operations.
+        Manager operations will be done once for the specified amount of
+        backgrondProcess calls (ie, the lower the amount, the more often the
+        checks will occur). The minimum value is 1, and the default value is 6.
+        </p>
+      </attribute>
+
+      <attribute name="randomClass" required="false">
+        <p>Java class name of the <code>java.util.Random</code>
+        implementation class to use.  If not specified, the default value is
+        <code>java.security.SecureRandom</code>.</p>
+      </attribute>
+
+      <attribute name="sessionIdLength" required="false">
+       <p>The length of session ids created by this Manager, excluding any
+        JVM route information used for load balancing. 
+        The default is 16.</p>
+      </attribute>
+
+    </attributes>
+
+    <h3>Persistent Manager Implementation</h3>
+
+    <p><em><strong>WARNING - Use of this Manager implementation
+    has not been thoroughly tested, and should be considered experimental!
+    </strong></em></p>
+
+    <p>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>
+
+    <attributes>
+
+      <attribute name="algorithm" required="false">
+        <p>Name of the <em>Message Digest</em> algorithm used to calculate
+        session identifiers produced by this Manager.  This value must
+        be supported by the <code>java.security.MessageDigest</code> class.
+        If not specified, the default value is "MD5".</p>
+      </attribute>
+
+      <attribute name="className" required="false">
+        <p>Java class name of the implementation to use.  This class must
+        implement the <code>org.apache.catalina.Manager</code> interface.
+        You <strong>must</strong> specify
+        <code>org.apache.catalina.session.PersistentManager</code> to use
+        this manager implementation.</p>
+      </attribute>
+
+      <attribute name="entropy" required="false">
+        <p>A String value that is utilized when seeding the random number
+        generator used to create session identifiers for this Manager.
+        If not specified, a semi-useful value is calculated, but a long
+        String value should be specified in security-conscious
+        environments.</p>
+      </attribute>
+
+      <attribute name="maxActiveSessions" required="false">
+        <p>The maximum number of active sessions that will be created by
+        this Manager, or -1 (the default) for no limit.</p>
+      </attribute>
+
+      <attribute name="maxIdleBackup" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="maxIdleSwap" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="minIdleSwap" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="maxInactiveInterval" required="false">
+        <p>The initial maximum time interval, in seconds, 
+        between client requests before a session is invalidated. A negative value
+        will result in sessions never timing out. If the attribute is not provided,
+        a default of 60 seconds is used.</p>
+        
+        <p>This attribute provides the initial value whenever a 
+        new session is created, but the interval may be dynamically 
+        varied by a servlet via the 
+        <code>setMaxInactiveInterval</code>method of the <code>HttpSession</code> object.</p>
+      </attribute>
+
+      <attribute name="randomClass" required="false">
+        <p>Java class name of the <code>java.util.Random</code>
+        implementation class to use.  If not specified, the default value is
+        <code>java.security.SecureRandom</code>.</p>
+      </attribute>
+
+      <attribute name="saveOnRestart" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="sessionIdLength" required="false">
+        <p>The length of session ids created by this Manager, excluding any
+        JVM route information used for load balancing. 
+        The default is 16.</p>
+      </attribute>
+
+    </attributes>
+
+    <p>In order to successfully use a PersistentManager, you must nest inside
+    it a <strong>&lt;Store&gt;</strong> element, as described below.</p>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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>&lt;Manager&gt;</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>&lt;Store&gt;</strong> element inside, which defines the
+  characteristics of the persistent data storage.  Two implementations
+  of the <code>&lt;Store&gt;</code> element are currently available,
+  with different characteristics, as described belowl</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>&lt;Store&gt;</code> nested inside
+  your <code>&lt;Manager&gt;</code> element with the following attributes:
+  </p>
+
+  <attributes>
+
+    <attribute name="checkInterval" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="className" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="directory" required="false">
+      <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>
+    </attribute>
+
+  </attributes>
+
+
+  <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>&lt;Store&gt;</code> nested inside
+  your <code>&lt;Manager&gt;</code> element with the following attributes:
+  </p>
+
+  <attributes>
+
+    <attribute name="checkInterval" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="className" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="connectionURL" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="driverName" required="true">
+      <p>Java class name of the JDBC driver to be used.</p>
+    </attribute>
+
+    <attribute name="sessionAppCol" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionDataCol" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionIdCol" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionLastAccessedCol" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionMaxInactiveCol" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionTable" required="true">
+      <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>
+    </attribute>
+
+    <attribute name="sessionValidCol" required="true">
+      <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>
+    </attribute>
+
+  </attributes>
+
+  <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>
+
+<source>
+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)
+);
+</source>
+
+  <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/server/lib</code>
+  directory (if your applications do not also need it) or into the
+  <code>$CATALINA_HOME/common/lib</code> directory (if you wish to share
+  this driver with your web applications.</p>
+
+</section>
+
+
+<section name="Special Features">
+
+
+  <subsection name="Restart Persistence">
+
+    <p>Whenver Catalina 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>&lt;distributable&gt;</code> element in your web
+    application deployment descriptor (<code>/WEB-INF/web.xml</code>).</p>
+
+  </subsection>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/project.xml b/webapps/docs/config/project.xml
new file mode 100644 (file)
index 0000000..4712b81
--- /dev/null
@@ -0,0 +1,46 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Apache Tomcat Configuration Reference"
+        href="http://jakarta.apache.org/tomcat/">
+
+  <title>Apache Tomcat Configuration Reference</title>
+
+  <logo href="/images/tomcat.gif">
+    The Apache Tomcat Servlet/JSP Container
+  </logo>
+
+    
+  <body>
+
+    <menu name="Links">
+        <item name="Docs Home"             href="../index.html"/>
+        <item name="Config Ref. Home"      href="index.html"/>
+    </menu>
+
+    <menu name="Top Level Elements">
+        <item name="Server"                href="server.html"/>
+        <item name="Service"               href="service.html"/>
+    </menu>
+
+    <menu name="Connectors">
+        <item name="HTTP"                  href="http.html"/>
+        <item name="AJP"                   href="ajp.html"/>
+    </menu>
+
+    <menu name="Containers">
+        <item name="Context"               href="context.html"/>
+        <item name="Engine"                href="engine.html"/>
+        <item name="Host"                  href="host.html"/>
+    </menu>
+
+    <menu name="Nested Components">
+        <item name="Global Resources"      href="globalresources.html"/>
+        <item name="Loader"                href="loader.html"/>
+        <item name="Manager"               href="manager.html"/> 
+        <item name="Realm"                 href="realm.html"/>
+        <item name="Resources"             href="resources.html"/>
+        <item name="Valve"                 href="valve.html"/>
+    </menu>
+
+  </body>
+
+</project>
diff --git a/webapps/docs/config/realm.xml b/webapps/docs/config/realm.xml
new file mode 100644 (file)
index 0000000..c147978
--- /dev/null
@@ -0,0 +1,497 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="realm.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Realm Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Realm</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This class must
+        implement the <code>org.apache.catalina.Realm</code> interface.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+    <h3>JDBC Database Realm (org.apache.catalina.realm.JDBCRealm)</h3>
+
+    <p>The <strong>JDBC Database Realm</strong> connects Catalina 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>
+
+    <attributes>
+
+      <attribute name="connectionName" required="true">
+        <p>The database username to use when establishing the JDBC
+        connection.</p>
+      </attribute>
+
+      <attribute name="connectionPassword" required="true">
+        <p>The database password to use when establishing the JDBC
+        connection.</p>
+      </attribute>
+
+      <attribute name="connectionURL" required="true">
+        <p>The connection URL to be passed to the JDBC driver when
+        establishing a database connection.</p>
+      </attribute>
+
+      <attribute name="digest" required="false">
+        <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>
+      </attribute>
+   
+      <attribute name="digestEncoding" required="false">
+        <p>The charset for encoding digests.  If not specified, the platform
+        default will be used.</p>
+      </attribute>
+
+      <attribute name="driverName" required="true">
+        <p>Fully qualified Java class name of the JDBC driver to be
+        used to connect to the authentication database.</p>
+      </attribute>
+
+      <attribute name="roleNameCol" required="true">
+        <p>Name of the column, in the "user roles" table, which contains
+        a role name assigned to the corresponding user.</p>
+      </attribute>
+
+      <attribute name="userCredCol" required="true">
+        <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>
+      </attribute>
+
+      <attribute name="userNameCol" required="true">
+        <p>Name of the column, in the "users" and "user roles" table,
+        that contains the user's username.</p>
+      </attribute>
+
+      <attribute name="userRoleTable" required="true">
+        <p>Name of the "user roles" table, which must contain columns
+        named by the <code>userNameCol</code> and <code>roleNameCol</code>
+        attributes.</p>
+      </attribute>
+
+      <attribute name="userTable" required="true">
+        <p>Name of the "users" table, which must contain columns named
+        by the <code>userNameCol</code> and <code>userCredCol</code>
+        attributes.</p>
+      </attribute>
+
+    </attributes>
+
+    <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>
+
+
+    <h3>
+      DataSource Database Realm (org.apache.catalina.realm.DataSourceRealm)
+    </h3>
+
+    <p>The <strong>DataSource Database Realm</strong> connects Catalina 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>
+
+    <attributes>
+
+      <attribute name="dataSourceName" required="true">
+        <p>The name of the JNDI JDBC DataSource for this Realm.</p>
+      </attribute>
+
+      <attribute name="digest" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="roleNameCol" required="true">
+        <p>Name of the column, in the "user roles" table, which contains
+        a role name assigned to the corresponding user.</p>
+      </attribute>
+
+      <attribute name="userCredCol" required="true">
+        <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>
+      </attribute>
+
+      <attribute name="userNameCol" required="true">
+        <p>Name of the column, in the "users" and "user roles" table,
+        that contains the user's username.</p>
+      </attribute>
+
+      <attribute name="userRoleTable" required="true">
+        <p>Name of the "user roles" table, which must contain columns
+        named by the <code>userNameCol</code> and <code>roleNameCol</code>
+        attributes.</p>
+      </attribute>
+
+      <attribute name="userTable" required="true">
+        <p>Name of the "users" table, which must contain columns named
+        by the <code>userNameCol</code> and <code>userCredCol</code>
+        attributes.</p>
+      </attribute>
+
+    </attributes>
+
+    <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>
+
+
+    <h3>JNDI Directory Realm (org.apache.catalina.realm.JNDIRealm)</h3>
+
+
+    <p>The <strong>JNDI Directory Realm</strong> connects Catalina 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>
+
+    <attributes>
+       <attribute name="alternateURL" required="false">
+         <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>
+       </attribute>
+
+       <attribute name="authentication" required="false">
+         <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>
+       </attribute>
+
+      <attribute name="connectionName" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="connectionPassword" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="connectionURL" required="true">
+        <p>The connection URL to be passed to the JNDI driver when
+        establishing a connection to the directory.</p>
+      </attribute>
+
+      <attribute name="contextFactory" required="false">
+        <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>
+      </attribute>
+      
+      <attribute name="derefAliases" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="protocol" required="false">
+         <p>A string specifying the security protocol to use. If not given
+         the providers default is used.</p>
+      </attribute>
+
+      <attribute name="roleBase" required="false">
+        <p>The base directory entry for performing role searches. If
+        not specified the top-level element in the directory context
+        will be used.</p>
+      </attribute>
+
+      <attribute name="roleName" required="false">
+        <p>The name of the attribute that contains role names in the
+        directory entries found by a role search. In addition you can
+        use the <code>userRoleName</code> property to specify the name
+        of an attribute, in the user's entry, containing additional
+        role names.  If <code>roleName</code> is not specified a role
+        search does not take place, and roles are taken only from the
+        user's entry.</p>
+      </attribute>
+
+      <attribute name="roleSearch" required="false">
+        <p>The LDAP filter expression used for performing role
+        searches.  Use <code>{0}</code> to substitute the
+        distinguished name (DN) of the user, and/or <code>{1}</code> to
+        substitute the username. If not specified a role search does
+        not take place and roles are taken only from the attribute in
+        the user's entry specified by the <code>userRoleName</code>
+        property.</p>
+      </attribute>
+
+      <attribute name="roleSubtree" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userBase" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userPassword" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userPattern" required="false">
+        <p>Pattern for the distinguished name (DN) of the user's
+        directory entry, with <code>{0}</code> marking where the
+        actual username should be inserted. You can use this property
+        instead of <code>userSearch</code>, <code>userSubtree</code>
+        and <code>userBase</code> when the distinguished name contains
+        the username and is otherwise the same for all users.</p>
+      </attribute>
+
+      <attribute name="userRoleName" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userSearch" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userSubtree" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+    <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>
+
+
+    <h3>Memory Based Realm (org.apache.catalina.realm.MemoryRealm)</h3>
+
+    <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>
+
+    <attributes>
+
+      <attribute name="pathname" required="false">
+        <p>Absolute or relative (to $CATALINA_HOME) 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>
+      </attribute>
+
+    </attributes>
+
+    <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>&lt;tomcat-users&gt;</code>.
+        </li>
+    <li>Each authorized user must be represented by a single XML element
+        <code>&lt;user&gt;</code>, nested inside the root element.</li>
+    <li>Each <code>&lt;user&gt;</code> element must have the following
+        attributes:
+        <ul>
+        <li><strong>name</strong> - Username of this user (must be unique
+            within this file).</li>
+        <li><strong>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>
+
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <p>No components may be nested inside a <strong>Realm</strong> element.</p>
+
+</section>
+
+
+<section name="Special Features">
+
+  <p>See <a href="host.html">Single Sign On</a> for information about
+  configuring Single Sign On support for a virtual host.</p>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/resources.xml b/webapps/docs/config/resources.xml
new file mode 100644 (file)
index 0000000..c1745de
--- /dev/null
@@ -0,0 +1,100 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="resources.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <title>The Resources Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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 class laoder
+  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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+    <p>All implementations of <strong>Resources</strong>
+    support the following attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+  <subsection name="Standard Implementation">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Nested Components">
+
+  <p>No components may be nested inside a <strong>Resources</strong> element.</p>
+
+</section>
+
+
+<section name="Special Features">
+
+  <p>No special features are associated with a <strong>Resources</strong>
+  element.</p>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/config/server.xml b/webapps/docs/config/server.xml
new file mode 100644 (file)
index 0000000..f22bdab
--- /dev/null
@@ -0,0 +1,97 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="server.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Server Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+  <p>All implementations of <strong>Server</strong>
+  support the following attributes:</p>
+
+  <attributes>
+
+    <attribute name="className" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="port" required="true">
+      <p>The TCP/IP port number on which this server waits for a shutdown
+      command.  This connection must be initiated from the same server
+      computer that is running this instance of Tomcat.</p>
+    </attribute>
+
+    <attribute name="shutdown" required="true">
+      <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>
+    </attribute>
+
+  </attributes>
+
+  </subsection>
+
+  <subsection name="Standard Implementation">
+
+  <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>
+
+  <attributes>
+  </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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>
+
+</section>
+
+
+<section name="Special Features">
+
+  <p>There are no special features associated with a <strong>Server</strong>.
+  </p>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/config/service.xml b/webapps/docs/config/service.xml
new file mode 100644 (file)
index 0000000..c0a9661
--- /dev/null
@@ -0,0 +1,91 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="service.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Service Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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>
+
+</section>
+
+
+<section name="Attributes">
+
+  <subsection name="Common Attributes">
+
+  <p>All implementations of <strong>Service</strong>
+  support the following attributes:</p>
+
+  <attributes>
+
+    <attribute name="className" required="false">
+      <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>
+    </attribute>
+
+    <attribute name="name" required="true">
+      <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>
+    </attribute>
+
+  </attributes>
+
+  </subsection>
+
+  <subsection name="Standard Implementation">
+
+  <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>
+
+  <attributes>
+
+  </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Nested Components">
+
+  <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>
+
+</section>
+
+
+<section name="Special Features">
+
+  <p>There are no special features associated with a <strong>Service</strong>.
+  </p>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/config/valve.xml b/webapps/docs/config/valve.xml
new file mode 100644 (file)
index 0000000..5f97d96
--- /dev/null
@@ -0,0 +1,434 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="valve.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>The Valve Component</title>
+  </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+  <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_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+</section>
+
+
+<section name="Access Log Valve">
+
+  <subsection name="Introduction">
+
+    <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>
+
+  </subsection>
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Access Log Valve</strong> supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <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. To use a more optimized access log valve
+        designed for production use, you MUST set this attribute to 
+        <strong>org.apache.catalina.valves.FastCommonAccessLogValve</strong>.
+        In this case, only the <code>common</code> and <code>combined</code>
+        patterns are supported.</p>
+      </attribute>
+
+      <attribute name="directory" required="false">
+        <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_HOME.  If
+        no directory attribute is specified, the default value is "logs"
+        (relative to $CATALINA_HOME).</p>
+      </attribute>
+
+      <attribute name="pattern" required="false">
+        <p>A formatting layout identifying the various information fields
+        from the request and response to be logged, or the word
+        <code>common</code> or <code>combined</code> to select a
+        standard format.  See below for more information on configuring
+        this attribute. Note that the optimized access does only support
+        <code>common</code> and <code>combined</code> as the value for this
+        attribute.</p>
+      </attribute>
+
+      <attribute name="prefix" required="false">
+        <p>The prefix added to the start of each log file's name.  If not
+        specified, the default value is "access_log.".  To specify no prefix,
+        use a zero-length string.</p>
+      </attribute>
+
+      <attribute name="resolveHosts" required="false">
+        <p>Set to <code>true</code> to convert the IP address of the remote
+        host into the corresponding host name via a DNS lookup.  Set to
+        <code>false</code> to skip this lookup, and report the remote IP
+        address instead.</p>
+      </attribute>
+
+      <attribute name="suffix" required="false">
+        <p>The suffix added to the end of each log file's name.  If not
+        specified, the default value is "".  To specify no suffix,
+        use a zero-length string.</p>
+      </attribute>
+
+      <attribute name="rotatable" required="false">
+        <p>Deafult true. Flag to determine if log rotation should occur.
+           If set to false, then this file is never rotated and
+           <tt>fileDateFormat</tt> is ignored. Use with caution!
+        </p>
+      </attribute>
+
+      <attribute name="condition" required="false">
+        <p>Turns on conditional logging. If set, requests will be
+           logged only if <tt>ServletRequest.getAttribute()</tt> is
+           null. For example, if this value is set to
+           <tt>junk</tt>, then a particular request will only be logged
+           if <tt>ServletRequest.getAttribute("junk") == null</tt>.
+           The use of Filters is an easy way to set/unset the attribute
+           in the ServletRequest on many different requests.
+        </p>
+      </attribute>
+
+      <attribute name="fileDateFormat" required="false">
+        <p>Allows a customized date format in the access log file name.
+           The date format also decides how often the file is rotated.
+           If you wish to rotate every hour, then set this value
+           to: <tt>yyyy-MM-dd.HH</tt>
+        </p>
+      </attribute>
+
+    </attributes>
+
+    <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>resolveHosts</code> 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>
+    </ul>
+
+    <p>
+    There is also support to write information from the cookie, incoming
+    header, the Session or something else in the ServletRequest.
+    It is modeled after the apache syntax:
+    <ul>
+    <li><b><code>%{xxx}i</code></b> for incoming 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>
+    </ul>
+    </p>
+
+
+    <p>The shorthand pattern name <code>common</code> (which is also the
+    default) corresponds to <strong>%h %l %u %t "%r" %s %b"</strong>.</p>
+
+    <p>The shorthand pattern name <code>combined</code> appends the
+    values of the <code>Referer</code> and <code>User-Agent</code> headers,
+    each in double quotes, to the <code>common</code> pattern
+    described in the previous paragraph.</p>
+
+  </subsection>
+
+</section>
+
+
+<section name="Remote Address Filter">
+
+  <subsection name="Introduction">
+
+    <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
+    <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a> library.
+    Please consult the Regexp documentation for details of the expressions
+    supported.</p>
+
+  </subsection>
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Remote Address Filter</strong> supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This MUST be set to
+        <strong>org.apache.catalina.valves.RemoteAddrValve</strong>.</p>
+      </attribute>
+
+      <attribute name="allow" required="false">
+        <p>A comma-separated list of <em>regular expression</em> patterns
+        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>
+      </attribute>
+
+      <attribute name="deny" required="false">
+        <p>A comma-separated list of <em>regular expression</em> patterns
+        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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Remote Host Filter">
+
+  <subsection name="Introduction">
+
+    <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
+    <a href="http://jakarta.apache.org/regexp/">Jakarta Regexp</a> library.
+    Please consult the Regexp documentation for details of the expressions
+    supported.</p>
+
+  </subsection>
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Remote Host Filter</strong> supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This MUST be set to
+        <strong>org.apache.catalina.valves.RemoteHostValve</strong>.</p>
+      </attribute>
+
+      <attribute name="allow" required="false">
+        <p>A comma-separated list of <em>regular expression</em> patterns
+        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>
+      </attribute>
+
+      <attribute name="deny" required="false">
+        <p>A comma-separated list of <em>regular expression</em> patterns
+        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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+</section>
+
+
+<section name="Request Dumper Valve">
+
+
+  <subsection name="Introduction">
+
+    <p>The <em>Request Dumper Valve</em> is a useful tool in debugging
+    interactions with a client application (or browser) that is sending
+    HTTP requests to your Tomcat-based server.  When configured, it causes
+    details about each request processed by its associated <code>Engine</code>, 
+    <code>Host</code>, or <code>Context</code> to be logged according to 
+    the logging configuration for that container.</p>
+
+    <p><strong>WARNING: Using this valve has side-effects.</strong>  The
+    output from this valve includes any parameters included with the request.
+    The parameters will be decoded using the default platform encoding. Any
+    subsequent calls to <code>request.setCharacterEncoding()</code> within
+    the web application will have no effect.</p>
+
+  </subsection>
+
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Request Dumper Valve</strong> supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This MUST be set to
+        <strong>org.apache.catalina.valves.RequestDumperValve</strong>.</p>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Single Sign On Valve">
+
+  <subsection name="Introduction">
+
+    <p>The <em>Single Sign On Vale</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>
+
+  </subsection>
+
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Single Sign On</strong> Valve supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This MUST be set to
+        <strong>org.apache.catalina.authenticator.SingleSignOn</strong>.</p>
+      </attribute>
+
+      <attribute name="requireReauthentication" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Form Authenticator Valve">
+
+  <subsection name="Introduction">
+
+    <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>
+
+  </subsection>
+
+  <subsection name="Attributes">
+
+    <p>The <strong>Form Authenticator Valve</strong> supports the following
+    configuration attributes:</p>
+
+    <attributes>
+
+      <attribute name="className" required="true">
+        <p>Java class name of the implementation to use.  This MUST be set to
+        <strong>org.apache.catalina.authenticator.FormAuthenticator</strong>.</p>
+      </attribute>
+
+      <attribute name="characterEncoding" required="false">
+        <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>
+      </attribute>
+
+    </attributes>
+
+  </subsection>
+
+</section>
+
+
+</body>
+
+
+</document>
diff --git a/webapps/docs/connectors.xml b/webapps/docs/connectors.xml
new file mode 100644 (file)
index 0000000..e27101b
--- /dev/null
@@ -0,0 +1,61 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="connectors.html">
+
+    &project;
+
+    <properties>
+        <author email="remm@apache.org">Remy Maucherat</author>
+        <title>Connectors How To</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+<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>
+
+</section>
+
+<section name="HTTP">
+
+<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>
+
+</section>
+
+<section name="AJP">
+
+<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>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/default-servlet.xml b/webapps/docs/default-servlet.xml
new file mode 100644 (file)
index 0000000..84fbd24
--- /dev/null
@@ -0,0 +1,298 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="default-servlet.html">
+
+    &project;
+
+    <properties>
+        <author email="funkman@apache.org">Tim Funk</author>
+        <title>Default Servlet Reference</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+This discusses different ways to manipulate the default servlet. Topics are
+<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>
+
+</section>
+
+<section name="What is the DefaultServlet">
+<a name="what"></a>
+The default servlet is the servlet which serves static resources as well
+as serves the directory listings (if directory listings are enabled).
+
+</section>
+
+<section name="Where is it declared?">
+<a name="where"></a>
+It is declared globally in <i>$CATALINA_HOME/conf/web.xml</i>.
+By default here is it's declaration:
+<source>
+    &lt;servlet&gt;
+        &lt;servlet-name&gt;default&lt;/servlet-name&gt;
+        &lt;servlet-class&gt;
+          org.apache.catalina.servlets.DefaultServlet
+        &lt;/servlet-class&gt;
+        &lt;init-param&gt;
+            &lt;param-name&gt;debug&lt;/param-name&gt;
+            &lt;param-value&gt;0&lt;/param-value&gt;
+        &lt;/init-param&gt;
+        &lt;init-param&gt;
+            &lt;param-name&gt;listings&lt;/param-name&gt;
+            &lt;param-value&gt;true&lt;/param-value&gt;
+        &lt;/init-param&gt;
+        &lt;load-on-startup&gt;1&lt;/load-on-startup&gt;
+    &lt;/servlet&gt;
+
+...
+
+    &lt;servlet-mapping&gt;
+        &lt;servlet-name&gt;default&lt;/servlet-name&gt;
+        &lt;url-pattern&gt;/&lt;/url-pattern&gt;
+    &lt;/servlet-mapping&gt;
+
+</source>
+
+So by default, the default servlet is loaded at webapp startup and
+directory listings are enabled and debugging is turned off.
+</section>
+
+<section name="What can I change?">
+<a name="change"></a>
+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.
+    </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>
+        <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. default value is null
+    </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 direcotory listings.
+        This can be disabled by per webapp by also declaring the
+        default servlet in your local webapp's web.xml. The format
+        of the xml is shown below.
+    </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>. 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'>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>
+
+</table>
+</section>
+
+<section name="How do I customize directory listings?">
+<a name="dir"></a>
+<p>You can override DefaultServlet with you own implementation and use that
+in your web.xml declaration. If you
+can undertand what was just said, we will assume yo 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:
+<source>
+    &lt;listing&gt;
+     &lt;entries&gt;
+      &lt;entry type='file|dir' urlPath='aPath' size='###' date='gmt date'&gt;
+        fileName1
+      &lt;/entry&gt;
+      &lt;entry type='file|dir' urlPath='aPath' size='###' date='gmt date'&gt;
+        fileName2
+      &lt;/entry&gt;
+      ...
+     &lt;/entries&gt;
+     &lt;readme&gt;&lt;/readme&gt;
+    &lt;/listing&gt;
+</source>
+<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:
+<source>
+&lt;?xml version="1.0"?&gt;
+
+&lt;xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0"&gt;
+
+  &lt;xsl:output method="xhtml" encoding="iso-8859-1" indent="no"/&gt;
+
+  &lt;xsl:template match="listing"&gt;
+   &lt;html&gt;
+    &lt;head&gt;
+      &lt;title&gt;
+        Sample Directory Listing For
+        &lt;xsl:value-of select="@directory"/&gt;
+      &lt;/title&gt;
+      &lt;style&gt;
+        h1{color : white;background-color : #0086b2;}
+        h3{color : white;background-color : #0086b2;}
+        body{font-family : sans-serif,Arial,Tahoma;
+             color : black;background-color : white;}
+        b{color : white;background-color : #0086b2;}
+        a{color : black;} HR{color : #0086b2;}
+      &lt;/style&gt;
+    &lt;/head&gt;
+    &lt;body&gt;
+      &lt;h1&gt;Sample Directory Listing For
+            &lt;xsl:value-of select="@directory"/&gt;
+      &lt;/h1&gt;
+      &lt;hr size="1" /&gt;
+      &lt;table cellspacing="0"
+                  width="100%"
+            cellpadding="5"
+                  align="center"&gt;
+        &lt;tr&gt;
+          &lt;th align="left"&gt;Filename&lt;/th&gt;
+          &lt;th align="center"&gt;Size&lt;/th&gt;
+          &lt;th align="right"&gt;Last Modified&lt;/th&gt;
+        &lt;/tr&gt;
+        &lt;xsl:apply-templates select="entries"/&gt;
+        &lt;/table&gt;
+      &lt;xsl:apply-templates select="readme"/&gt;
+      &lt;hr size="1" /&gt;
+      &lt;h3&gt;Apache Tomcat/5.0&lt;/h3&gt;
+    &lt;/body&gt;
+   &lt;/html&gt;
+  &lt;/xsl:template&gt;
+
+
+  &lt;xsl:template match="entries"&gt;
+    &lt;xsl:apply-templates select="entry"/&gt;
+  &lt;/xsl:template&gt;
+
+  &lt;xsl:template match="readme"&gt;
+    &lt;hr size="1" /&gt;
+    &lt;pre&gt;&lt;xsl:apply-templates/&gt;&lt;/pre&gt;
+  &lt;/xsl:template&gt;
+
+  &lt;xsl:template match="entry"&gt;
+    &lt;tr&gt;
+      &lt;td align="left"&gt;
+        &lt;xsl:variable name="urlPath" select="@urlPath"/&gt;
+        &lt;a href="{$urlPath}"&gt;
+          &lt;tt&gt;&lt;xsl:apply-templates/&gt;&lt;/tt&gt;
+        &lt;/a&gt;
+      &lt;/td&gt;
+      &lt;td align="right"&gt;
+        &lt;tt&gt;&lt;xsl:value-of select="@size"/&gt;&lt;/tt&gt;
+      &lt;/td&gt;
+      &lt;td align="right"&gt;
+        &lt;tt&gt;&lt;xsl:value-of select="@date"/&gt;&lt;/tt&gt;
+      &lt;/td&gt;
+    &lt;/tr&gt;
+  &lt;/xsl:template&gt;
+
+&lt;/xsl:stylesheet&gt;
+</source>
+
+</section>
+
+<section name="How do I secure directory listings?">
+<a name="secure"></a>
+Use web.xml in each individual webapp. See the security section of the
+Servlet specification.
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/deployer-howto.xml b/webapps/docs/deployer-howto.xml
new file mode 100644 (file)
index 0000000..7933338
--- /dev/null
@@ -0,0 +1,330 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="deployer-howto.html">
+
+    &project;
+
+    <properties>
+        <author>Allistair Crossley</author>
+        <title>Tomcat Web Application Deployment</title>
+    </properties>
+
+<body>
+
+    <section name="Table of Contents">
+    <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 Tomcat Client Deployer</a></li>
+    </ul>
+    
+    </section>
+    
+    <section name="Introduction">
+        <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.
+            <ul>
+                <li>Statically; the web application is setup before Tomcat is started</li>
+                <li>
+                    Dynamically; in conjunction with the Tomcat Manager web application or 
+                    manipulating already deployed web applications
+                </li>
+            </ul>
+        </p>
+        <p>
+            The Tomcat Manager is a tool that allows URL-based web application
+            deployment features. There is also a tool called the Client Deployer,
+            which is a command shell based script that interacts with the Tomcat
+            Manager but provides additional functionality such as compiling and
+            validating web applications as well as packaging web application into
+            web application resource (WAR) files.
+        </p>
+    </section>
+    
+    <section name="Installation">
+        <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 
+            Tomcat Manager manual. 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>jakarta-tomcat-5.5.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>
+    </section>
+        
+    <section name="A word on Contexts">
+        <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 TDC often use 
+            these Context Descriptors to perform their roles properly.
+        </p>
+        <p>
+            The locations for Context Descriptors are;
+            <ol>
+                <li>$CATALINA_HOME/conf/[enginename]/[hostname]/context.xml</li>
+                <li>$CATALINA_HOME/webapps/[webappname]/META-INF/context.xml</li>
+            </ol>
+            If a Context Descriptor is not provided for a Context, Tomcat
+            automatically creates one and places it in (1) with a filename of
+            [webappname].xml although if manually created, the filename need not
+            match the web application name as Tomcat is concerned only with the
+            Context configuration contained within the Context Descriptor file(s).
+        </p>
+    </section>
+    
+    <section name="Deployment on Tomcat startup">
+        <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_HOME/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>
+        <p>
+            Note again that for each deployed web application, a 
+            Context Descriptor will be created <i>unless one exists already</i>.
+        </p>
+    </section>
+    
+    <section name="Deploying on a running Tomcat server">
+        <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-deployment 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 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_HOME/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>
+    </section>
+    
+    <section name="Deploying using the Tomcat Manager">
+        <p>
+            The Tomcat Manager is covered in its <a href="manager-howto.html">own manual page</a>. 
+        </p>
+    </section>
+        
+    <section name="Deploying using the Client Deployer Package">
+        <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 familar 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 programatically 
+            deployed with the deployer may include a Context Desciptor 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
+                Tomcat 5.5.x 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</code>.
+            </li>
+            <li>
+                <code>username</code>: Tomcat Manager username (user should have a role of
+                manager)
+            </li>
+            <li><code>password</code>: Tomcat Manager password.</li>
+        </ul>
+    </section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/developers.xml b/webapps/docs/developers.xml
new file mode 100644 (file)
index 0000000..290b79c
--- /dev/null
@@ -0,0 +1,58 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="developers.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Tomcat Developers</title>
+  </properties>
+
+<body>
+
+  <section name="Active Developers">
+
+    <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://jakarta.apache.org/site/vendors.html">vendors page</a>
+      on the Jakarta website).
+    </p>
+
+    <ul>
+      <li>Amy Roh (amyroh): Catalina, Admin webapp</li>
+      <li>Bill Barker (billbarker): Connectors</li>
+      <li>Costin Manolache (costin): Catalina, Connectors</li>
+      <li>Filip Hanik (fhanik): Clustering</li>
+      <li>Glenn Nielsen (glenn): Catalina, Connectors</li>
+      <li>Henri Gomez (hgomez): Connectors</li>
+      <li>Jan Luehe (luehe): Jasper</li>
+      <li>Jean-Francois Arcand (jfarcand): Catalina</li>
+      <li>Jean-Frederic Clere (jfclere): Connectors</li>
+      <li>Kin-Man Chung (kinman): Jasper</li>
+      <li>Mladen Turk (mturk): Connectors</li>
+      <li>Peter Rossbach (pero): Catalina, Clustering, JMX</li>
+      <li>Remy Maucherat (remm): Catalina, Connectors, Docs</li>
+      <li>Tim Funk (funkman): Catalina, Docs</li>
+      <li>Yoav Shapira (yoavs): Docs, JMX, Catalina, balancer, Release Manager</li>
+    </ul>
+
+  </section>
+
+  <section name="Retired Developers">
+
+
+
+  </section>
+
+</body>
+</document>
diff --git a/webapps/docs/funcspecs/fs-admin-apps.xml b/webapps/docs/funcspecs/fs-admin-apps.xml
new file mode 100644 (file)
index 0000000..8080f73
--- /dev/null
@@ -0,0 +1,278 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-admin-apps.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>Administrative Apps - Overall Requirements</title>
+    <revision>$Id: fs-admin-apps.xml 301989 2003-06-25 01:38:16Z yoavs $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <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 5 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>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <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 5 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>Adminstrative 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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="External Technologies">
+
+    <p>The availability of the following technologies can be assumed
+    for the implementation and operation of the various access methods
+    and the corresponding administrative business logic:</p>
+    <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://jakarta.apache.org/struts/">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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Properties of Administered Objects">
+
+  <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>
+
+  </subsection>
+
+
+  <subsection name="Supported Administrative Operations">
+
+  <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>
+
+  </subsection>
+
+
+  <subsection name="Access Method Specific Requirements">
+
+  <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 a security constraint that
+      requires security role <code>manager</code> for processing.</li>
+  <li>The default user database shall <strong>not</strong> contain any
+      user that has been assigned the role <code>manager</code>.</li>
+  </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 (verson 4.7
+      or later) and Internet Explorer (version 5.0 or later).</li>
+  </ul>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <p><strong>FIXME</strong> - Complete this section.</p>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-admin-objects.xml b/webapps/docs/funcspecs/fs-admin-objects.xml
new file mode 100644 (file)
index 0000000..1545a70
--- /dev/null
@@ -0,0 +1,481 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-admin-objects.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>Administrative Apps - Administered Objects</title>
+    <revision>$Id: fs-admin-objects.xml 303281 2004-09-27 16:00:31Z yoavs $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Administered Objects Overview">
+
+<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>
+
+</section>
+
+
+<section name="Access Logger">
+
+  <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_HOME) 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>
+
+</section>
+
+
+<section name="Connector">
+
+  <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?
+      [true]</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>
+
+</section>
+
+
+<section name="Context">
+
+  <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_HOME/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>
+
+</section>
+
+
+<section name="Default Context">
+
+  <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 fo deployed web applications.</li>
+  </ul>
+
+</section>
+
+
+<section name="Default Deployment Descriptor">
+
+  <p>Default web application characteristics are configured in a special
+  deployment descriptor named <code>$CATALINA_HOME/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>
+
+</section>
+
+
+<section name="Engine">
+
+  <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>
+
+</section>
+
+
+<section name="Environment Entry">
+
+  <p>An <em>Environment Entry</em> is the representation of a
+  <code>&lt;env-entry&gt;</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>
+
+</section>
+
+
+<section name="Host">
+
+  <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_HOME) 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>
+
+</section>
+
+
+<section name="JDBC Resource">
+
+  <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>
+
+</section>
+
+
+<section name="Loader">
+
+  <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>
+
+</section>
+
+
+<section name="Manager">
+
+  <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>
+
+</section>
+
+
+<section name="Realm">
+
+  <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_HOME) 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>
+
+</section>
+
+
+<section name="Request Filter">
+
+  <p><strong>FIXME</strong> - complete this entry</p>
+
+</section>
+
+
+<section name="Server">
+
+  <p><strong>FIXME</strong> - complete this entry</p>
+
+</section>
+
+
+<section name="Service">
+
+  <p><strong>FIXME</strong> - complete this entry</p>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-admin-opers.xml b/webapps/docs/funcspecs/fs-admin-opers.xml
new file mode 100644 (file)
index 0000000..60852ba
--- /dev/null
@@ -0,0 +1,324 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-admin-opers.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>Administrative Apps - Supported Operations</title>
+    <revision>$Id: fs-admin-opers.xml 303281 2004-09-27 16:00:31Z yoavs $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Supported Operations Overview">
+
+<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 5 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>
+
+</section>
+
+
+<section name="Access Logger">
+
+  <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>
+
+</section>
+
+
+<section name="Connector">
+
+  <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>
+
+</section>
+
+
+<section name="Context">
+
+  <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>
+
+</section>
+
+
+<section name="Default Context">
+
+  <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>
+
+</section>
+
+
+<section name="Engine">
+
+  <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>
+
+</section>
+
+
+<section name="Environment Entry">
+
+  <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>
+
+</section>
+
+
+<section name="Host">
+
+  <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>
+
+</section>
+
+
+<section name="JDBC Resource">
+
+  <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>
+
+</section>
+
+
+<section name="Loader">
+
+  <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>
+
+</section>
+
+
+<section name="Manager">
+
+  <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>
+
+</section>
+
+
+<section name="Realm">
+
+  <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>
+
+</section>
+
+
+<section name="Request Filter">
+
+  <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>
+
+</section>
+
+
+<section name="Server">
+
+  <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>
+
+</section>
+
+
+<section name="Service">
+
+  <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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-default.xml b/webapps/docs/funcspecs/fs-default.xml
new file mode 100644 (file)
index 0000000..d42fcfd
--- /dev/null
@@ -0,0 +1,252 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-default.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>Default Servlet</title>
+    <revision>$Id: fs-default.xml 301460 2003-01-15 03:40:45Z glenn $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <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_HOME/conf/web.xml</code>) using a "default servlet"
+        servlet mapping, signified by URL pattern "/".</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Initialization Functionality">
+
+    <p>The following processing must be performed when the <code>init()</code>
+    method of the invoker servlet is called:</p>
+    <ul>
+    <li>Process and sanity check configuration parameters.</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Per-Request Functionality">
+
+
+    <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 perfomred:</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>
+
+  </subsection>
+
+
+  <subsection name="Finalization Functionality">
+
+    <p>No specific processing is required when the <code>destroy()</code>
+    method is called:</p>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <p>In addition the the assertions implied by the functionality requirements
+  listed above, the following additional assertions shall be tested to
+  validate the behavior of the invoker servlet:</p>
+  <ul>
+  <li>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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-invoker.xml b/webapps/docs/funcspecs/fs-invoker.xml
new file mode 100644 (file)
index 0000000..8ee7ca8
--- /dev/null
@@ -0,0 +1,247 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-invoker.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>Invoker Servlet</title>
+    <revision>$Id: fs-invoker.xml 301460 2003-01-15 03:40:45Z glenn $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <p>The purpose of the <strong>Invoker Servlet</strong> is to allow a
+    web application to dynamically register new <em>servlet definitions</em>
+    that correspond with a <code>&lt;servlet&gt;</code> element in the
+    <code>/WEB-INF/web.xml</code> deployment descriptor, and execute
+    requests utilizing the new servlet definitions.  From the perspective
+    of the newly registered servlets, all servlet lifecycle requirements
+    of the Servlet Specification (such as calling <code>init()</code> and
+    <code>destroy()</code> at the correct times) will be respected.</p>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <p>I do not know of any formal specification of the behavior of an
+    invoker servlet that is publicly available.  Anyone know of one?</p>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <p>The implementation of this functionality shall conform to the
+    following requirements:</p>
+    <ul>
+    <li>Implemented as a servlet.</li>
+    <li>Exist in the <code>org.apache.catalina.servlets</code> package
+        so that it can be loaded by the Catalina class loader.</li>
+    <li>Implement the <code>org.apache.catalina.ContainerServlet</code>
+        interface, so that it gains knowledge of the <code>Wrapper</code>
+        that is responsible for itself and, therefore, access to other
+        internal Catalina components.</li>
+    <li>Support a configurable debugging detail level.</li>
+    <li>Log debugging and operational messages (suitably internationalized)
+        via the <code>getServletContext().log()</code> method.</li>
+    </ul>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <p>The following environmental dependencies must be met in order for
+    the Invoker servlet to operate correctly:</p>
+    <ul>
+    <li>The invoker servlet must be registered in the application deployment
+        descriptor (or the default deployment descriptor in file
+        <code>$CATALINA_HOME/conf/web.xml</code>) using a "path mapped"
+        servlet mapping.  The historical default mapping is to URL pattern
+        "<code>/servlet/*</code>", although the invoker servlet must operate
+        correctly with an arbitrary mapping.</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <p>Correct operation of the invoker servlet depends on the following
+    specific features of the surrounding container:</p>
+    <ul>
+    <li>Correct support for the <code>ContainerServlet</code> interface,
+        including calling <code>setWrapper()</code> <strong>before</strong>
+        the <code>init()</code> method of the invoker servlet is called.</li>
+    <li>The web application class loader must be stored as the context
+        class loader of the request processing thread.</li>
+    </ul>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Initialization Functionality">
+
+    <p>The following processing must be performed when the <code>init()</code>
+    method of the invoker servlet is called:</p>
+    <ul>
+    <li>Ensure that the container has called <code>setWrapper()</code>.  If
+        not, throw a permanent <code>UnavailableException</code>.</li>
+    <li>Look up and cache the <code>Context</code> that corresponds to our
+        <code>Wrapper</code>.  This is the component with which new servlet
+        definitions and mappings will be registered.</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Per-Request Functionality">
+
+    <p>On each request, the following processing shall be performed:</p>
+    <ol>
+    <li>Calculate the <code>{ServletPath}</code> for this request, either from
+        request attribute <code>javax.servlet.include.servlet_path</code> or
+        by calling <code>request.getServletPath()</code>.</li>
+    <li>Calculate the <code>{PathInfo}</code> for this request, either from
+        request attribute <code>javax.servlet.include.path_info</code> or
+        by calling <code>request.getPathInfo()</code>.  If the calculated
+        <code>{PathInfo}</code> is null, return HTTP status 400
+        (bad request).</li>
+    <li>Parse the calculated <code>{PathInfo}</code> value as follows:
+        <ol>
+        <li>Ignore the leading slash character.</li>
+        <li>Accumulate characters up to the next '/' (if any) as the
+            <code>{ServletSelector}</code>.</li>
+        <li>If a '/' was encountered, accumulate all characters from that
+            slash (inclusive) to the end of the string as
+            <code>{PathRemainder}</code>.  If no slash was encountered,
+            set <code>{PathRemainder}</code> to a zero-length string.</li>
+        </ol></li>
+    <li>Determine whether <code>{ServletSelector}</code> is the name of an
+        existing servlet definition, and process it as follows:
+        <ol>
+        <li>Ask our associated <code>Context</code> to find and return a
+            child <code>Wrapper</code> named <code>{ServletSelector}</code>.
+            </li>
+        <li>If there is no such child, skip to the next major step.</li>
+        <li>Register a new servlet mapping for this <code>Wrapper</code>,
+            using a URL pattern calculated as follows:
+            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>
+            + "/*"</li>
+        <li>Create a request dispatcher using a path calculated as follows:
+            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>
+            + <code>{PathRemainder}</code></li>
+        <li>Forward this request to the created request dispatcher, and
+            exit from this request.</li>
+        </ol></li>
+    <li>Assume that <code>{ServletSelector}</code> is the fully qualified
+        name of a Java class that implements <code>javax.servlet.Servlet</code>
+        and process it as follows:
+        <ol>
+        <li>Synthesize a new <code>{ServletName}</code> for the servlet
+            definition that will be created.</li>
+        <li>If there is already a child <code>Wrapper</code> associated with
+            this name, return HTTP status 500 (internal server error), because
+            a mapping should have already been created for this servlet.</li>
+        <li>Attempt to load a class named <code>{ServletSelector}</code> from
+            the web application class loader (i.e. the context class loader
+            for our current thread).  If this fails, return HTTP status 404
+            (not found).</li>
+        <li>Instantiate an instance of this class.  If an error occurs,
+            return HTTP status 404 (not found).</li>
+        <li>If this class does not implement the
+            <code>javax.servlet.Servlet</code> interface, return HTTP status
+            404 (not found).</li>
+        <li>Create and register a new <code>Wrapper</code> child with our
+            <code>Context</code>, under name <code>{ServletName}</code>.</li>
+        <li>Register a new servlet mapping for this <code>Wrapper</code>,
+            using a URL pattern calculated as follows:
+            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>
+            + "/*"</li>
+        <li>Create a request dispatcher using a path calculated as follows:
+            <code>{ServletPath}</code> + "/" + <code>{ServletSelector}</code>
+            + <code>{PathRemainder}</code></li>
+        <li>Forward this request to the created request dispatcher, and
+            exit from this request.</li>
+        </ol></li>
+    </ol>
+
+  </subsection>
+
+
+  <subsection name="Finalization Functionality">
+
+    <p>No specific processing is required when the <code>destroy()</code>
+    method is called:</p>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <p>In addition the the assertions implied by the functionality requirements
+  listed above, the following additional assertions shall be tested to
+  validate the behavior of the invoker servlet:</p>
+  <ul>
+  <li>It is possible to access an existing servlet definition by name
+      through the invoker.  The existing servlet definition can include
+      either a <code>&lt;servlet-class&gt;</code> or
+      <code>&lt;jsp-file&gt;</code> subelement.</li>
+  <li>When an existing servlet definition is accessed by name, the request
+      will be ultimately processed by the same servlet instance that would
+      have processed it had a mapping to that servlet definition been used
+      on the request directly.</li>
+  <li>It is possible to access an anonymous servlet by class name
+      through the invoker.</li>
+  <li>When an anonymous servlet is accessed, the servlet instance is processed
+      according to the lifecycle requirements of the Servlet Specification.
+      </li>
+  <li>When an anonymous servlet is accessed, the servlet instance receives
+      a <code>ServletConfig</code> instance with no servlet initialization
+      parameters.</li>
+  <li>It is possible to utilize the invoker servlet via a direct request.</li>
+  <li>It is possible to utilize the invoker servlet via a call to
+      <code>RequestDispatcher.forward()</code>, or the corresponding
+      <code>&lt;jsp:forward&gt;</code> tag in a JSP page.</li>
+  <li>It is possible to utilize the invoker servlet via a call to
+      <code>RequestDispatcher.include()</code>, or the corresponding
+      <code>&lt;jsp:include&gt;</code> tag in a JSP page.</li>
+  <li>It is possible to use any HTTP method (including GET and POST) that
+      is supported by the Servlet class that is ultimately executed.</li>
+  <li>The invoker servlet should never be asked to process a second or
+      subsequent request for the same <code>{ServletSelector}</code> (because
+      it will have registered an appropriate servlet mapping.</li>
+  </ul>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-jdbc-realm.xml b/webapps/docs/funcspecs/fs-jdbc-realm.xml
new file mode 100644 (file)
index 0000000..c2fca55
--- /dev/null
@@ -0,0 +1,248 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-jdbc-realm.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>JDBCRealm</title>
+    <revision>$Id: fs-jdbc-realm.xml 301460 2003-01-15 03:40:45Z glenn $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <p>The purpose of the <strong>JDBCRealm</strong> implementation is to
+    provide a mechanism by which Tomcat 5 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>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <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_HOME/conf/server.xml</code>, in a
+        <code>&lt;Realm&gt;</code> element that is nested inside a
+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,
+        or <code>&lt;Context&gt;</code> element.</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Overview of Operation">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Detailed Functional Requirements">
+
+
+    <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>
+
+  </subsection>
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-jndi-realm.xml b/webapps/docs/funcspecs/fs-jndi-realm.xml
new file mode 100644 (file)
index 0000000..873dd80
--- /dev/null
@@ -0,0 +1,403 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-jndi-realm.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>JNDIRealm</title>
+    <revision>$Id: fs-jndi-realm.xml 301460 2003-01-15 03:40:45Z glenn $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <p>The purpose of the <strong>JNDIRealm</strong> implementation is to
+    provide a mechanism by which Tomcat 5 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 &lt;j.g.holman@qmw.ac.uk&gt;</li>
+    <li>Lockhart, Ellen &lt;elockhart@home.com&gt;</li>
+    <li>McClanahan, Craig &lt;craigmcc@apache.org&gt;</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <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_HOME/conf/server.xml</code>, in a
+        <code>&lt;Realm&gt;</code> element that is nested inside a
+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,
+        or <code>&lt;Context&gt;</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>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <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>
+    <li><code>JNDIRealm</code> must have the JNDI API classes available
+        to it.  For a JDK 1.2 container, that means <code>jndi.jar</code>
+        and the appropriate implementation (such as <code>ldap.jar</code>)
+        must be placed in the <code>server/lib</code> directory.</li>
+    </ul>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Operational Modes">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Administrator Login Mode Functionality">
+
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Username Login Mode Functionality">
+
+    <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>
+
+  </subsection>
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/fs-memory-realm.xml b/webapps/docs/funcspecs/fs-memory-realm.xml
new file mode 100644 (file)
index 0000000..60b3841
--- /dev/null
@@ -0,0 +1,239 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="fs-memory-realm.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <title>MemoryRealm</title>
+    <revision>$Id: fs-memory-realm.xml 301460 2003-01-15 03:40:45Z glenn $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Overview">
+
+
+  <subsection name="Introduction">
+
+    <p>The purpose of the <strong>MemoryRealm</strong> implementation is to
+    provide a mechanism by which Tomcat 5 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 5,
+    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>
+
+  </subsection>
+
+
+  <subsection name="External Specifications">
+
+    <p>The implementation of this functionality depends on the following
+    external specifications:</p>
+    <ul>
+    <li>None</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Implementation Requirements">
+
+    <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>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Dependencies">
+
+
+  <subsection name="Environmental Dependencies">
+
+    <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_HOME/conf/server.xml</code>, in a
+        <code>&lt;Realm&gt;</code> element that is nested inside a
+        corresponding <code>&lt;Engine&gt;</code>, <code>&lt;Host&gt;</code>,
+        or <code>&lt;Context&gt;</code> element.  (This is already
+        included in the default <code>server.xml</code> file.)</li>
+    </ul>
+
+  </subsection>
+
+
+  <subsection name="Container Dependencies">
+
+    <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/server/lib</code> (to make them visible only
+        to internal Catalina classes) or in directory
+        <code>$CATALINA_HOME/common/lib</code> (to make them visible to
+        Catalina internal classes <strong>and</strong> installed web
+        applications).</li>
+    </ul>
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Functionality">
+
+
+  <subsection name="Overview of Operation">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Detailed Functional Requirements">
+
+
+    <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_HOME</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>
+
+  </subsection>
+
+</section>
+
+
+<section name="Testable Assertions">
+
+  <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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/index.xml b/webapps/docs/funcspecs/index.xml
new file mode 100644 (file)
index 0000000..0b30679
--- /dev/null
@@ -0,0 +1,54 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <title>Table of Contents</title>
+  </properties>
+
+<body>
+
+
+<section name="Catalina Functional Specifications">
+
+<p>This documentation area includes <em>functional specifications</em> for
+many features supported by the <strong>Catalina</strong> servlet container
+portion of Tomcat 5.  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 5 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 5 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
+stil 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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/mbean-names.xml b/webapps/docs/funcspecs/mbean-names.xml
new file mode 100644 (file)
index 0000000..ac47b09
--- /dev/null
@@ -0,0 +1,870 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="mbean-names.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig McClanahan</author>
+    <author email="amyroh@apache.org">Amy Roh</author>
+    <title>Tomcat MBean Names</title>
+    <revision>$Id: mbean-names.xml 303281 2004-09-27 16:00:31Z yoavs $</revision>
+  </properties>
+
+<body>
+
+
+<section name="Background">
+
+    <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>
+
+</section>
+
+<section name="Catalina Object Hierarchy">
+
+<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 / DefaultContext</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td><code>type=${DEFAULT-CONTEXT}, service=${service.name}</code></td>
+  </tr>
+
+<!--
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / InstanceListener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Listener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td><code>type=${LISTENER}, sequence=${###}</code></td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Loader</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Manager</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Realm</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Resources</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / Valve</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / WrapperLifecycle</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / DefaultContext / WrapperListener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></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}, path=${path}, 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=${###}, path=${context.path},
+        host=${host.name}, service=${service.name}</code></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / Context / Listener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td><code>type=${LISTENER}, sequence=${###}, path=${context.path},
+        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}, path=${context.path}, 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}, path=${context.path}, 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}, path=${context.path}, 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}, path=${context.path}, 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=${###}, path=${context.path},
+        host=${host.name}, service=${service.name}</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=${###}, path=${context.path},
+        host=${host.name}, service=${service.name}</code></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / Context / WrapperListener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td><code>type=${WRAPPER-LISTENER}, sequence=${###}, path=${context.path},
+        host=${host.name}, service=${service.name}</code></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td><code>type=DefaultContext, host=${host.name},
+        service=${service.name}</code></td>
+  </tr>
+
+<!--
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / InstanceListener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Listener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Loader</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Manager</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Realm</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Resources</td>
+    <td align="center">0..1</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / Valve</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / WrapperLifecycle</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></td>
+  </tr>
+
+  <tr>
+    <td>Server / Service / Engine / Host / DefaultContext / WrapperListener</td>
+    <td align="center">0..n</td>
+    <td align="center">(none)</td>
+    <td></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>
+
+</section>
+
+<section name="MBean Groups and Names">
+
+<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>DefaultContext</code></td>
+    <td align="center"><code>DEFAULT-CONTEXT</code></td>
+    <td><code>org.apache.catalina.DefaultContext</code></td>
+    <td><code>org.apache.catalina.core.StandardDefaultContext</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>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>
+
+</section>
+
+<section name="JSR-77 Cross Reference">
+
+<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><strong>FIXME</strong> - Not yet identified as an MBean</td>
+  </tr>
+
+  <tr>
+    <td><code>WebModule</code></td>
+    <td><code>${CONTEXT}</code></td>
+    <td></td>
+  </tr>
+
+</table>
+
+</section>
+
+<section name="JSR-88 Cross Reference">
+
+<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>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/funcspecs/project.xml b/webapps/docs/funcspecs/project.xml
new file mode 100644 (file)
index 0000000..b265a07
--- /dev/null
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Catalina Functional Specifications"
+        href="http://jakarta.apache.org/tomcat/">
+
+    <title>Catalina Functional Specifications</title>
+
+    <logo href="/images/tomcat.gif">
+      Catalina Functional Specifications
+    </logo>
+
+    <body>
+
+    <menu name="Links">
+        <item name="Docs Home"             href="../../index.html"/>
+        <item name="Functional Specs"      href="index.html"/>
+    </menu>
+
+    <menu name="Administrative Apps">
+        <item name="Overall Requirements"  href="fs-admin-apps.html"/>
+         <item name="Tomcat MBean Names"    href="mbean-names.html"/>
+        <item name="Administered Objects"  href="fs-admin-objects.html"/>
+        <item name="Supported Operations"  href="fs-admin-opers.html"/>
+    </menu>
+
+    <menu name="Internal Servlets">
+        <item name="Default Servlet"       href="fs-default.html"/>
+        <item name="Invoker Servlet"       href="fs-invoker.html"/>
+    </menu>
+
+    <menu name="Realm Implementations">
+        <item name="JDBC Realm"            href="fs-jdbc-realm.html"/>
+        <item name="JNDI Realm"            href="fs-jndi-realm.html"/>
+        <item name="Memory Realm"          href="fs-memory-realm.html"/>
+    </menu>
+
+
+    </body>
+
+</project>
diff --git a/webapps/docs/html-manager-howto.xml b/webapps/docs/html-manager-howto.xml
new file mode 100644 (file)
index 0000000..cf3a747
--- /dev/null
@@ -0,0 +1,543 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="html-manager-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="glenn@apache.org">Glenn L. Nielsen</author>
+        <title>Tomcat Web Application Manager How To</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+<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 five sections:
+<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>Server Information</strong> - Information about the Tomcat
+      server.</li>
+</ul>
+</p>
+
+</section>
+
+<section name="Message">
+
+<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>
+
+</section>
+
+<section name="Manager">
+
+<p>The Manager section has three links:
+<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>
+</p>
+
+</section>
+
+<section name="Applications">
+
+<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:
+<ul>
+  <li><strong>Path</strong> - The web applicaton 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>
+</p>
+
+<subsection name="Start">
+
+<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>
+<source>
+OK - Started application at context path /examples
+</source>
+
+<p>Otherwise, the Message will start with <code>FAIL</code> and include an
+error message.  Possible causes for problems include:
+<ul>
+<li><em>Encountered exception</em>
+    <blockquote>             
+    <p>An exception was encountered trying to start the web application.
+    Check the Tomcat 5 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>
+</p>
+
+</subsection>
+
+<subsection name="Stop">
+
+<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>
+<source>
+OK - Stopped application at context path /examples
+</source>
+                             
+<p>Otherwise, the Message will start with <code>FAIL</code> and include an
+error message.  Possible causes for problems include:
+<ul>                         
+<li><em>Encountered exception</em>
+    <blockquote>             
+    <p>An exception was encountered trying to stop the web application.
+    Check the Tomcat 5 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>
+</p>
+
+</subsection>
+
+<subsection name="Reload">
+
+<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>
+<source>
+OK - Reloaded application at context path /examples
+</source>
+
+<p>Otherwise, the Message will start with <code>FAIL</code> and include an
+error message.  Possible causes for problems include:
+<ul>
+<li><em>Encountered exception</em>
+    <blockquote>             
+    <p>An exception was encountered trying to restart the web application.
+    Check the Tomcat 5 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>
+</p>
+
+</subsection>
+
+<subsection name="Undeploy">
+
+<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>
+<source>
+OK - Undeployed application at context path /examples
+</source>
+                             
+<p>Otherwise, the Message will start with <code>FAIL</code> and include an
+error message.  Possible causes for problems include:
+<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>
+</p>
+
+</subsection>
+
+</section>
+
+<section name="Deploy">
+
+<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>
+
+<subsection name="Deploy directory or WAR file located on server">
+
+<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>.
+<source>
+Context Path: /footoo
+WAR or Directory URL: file:C:/path/to/foo
+</source>
+</p>
+
+<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.
+<source>
+WAR or Directory URL: jar:file:/path/to/bar.war!/
+</source>
+</p>
+
+<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.
+<source>
+WAR or Directory URL: foo
+</source>
+</p>
+
+<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>.
+<source>
+Context Path: /bartoo
+WAR or Directory URL: bar.war
+</source>
+</p>
+
+<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:
+<source>
+&lt;Context path="/foobar" docBase="C:\path\to\application\foobar"
+         debug="0"&gt;
+
+  &lt;!-- Link to the user database we will get roles from --&gt;
+  &lt;ResourceLink name="users" global="UserDatabase"
+                type="org.apache.catalina.UserDatabase"/&gt;
+
+&lt;/Context&gt;
+</source>
+</p>
+
+<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.
+<source>
+XML Configuration file URL: file:C:/path/to/context.xml
+</source>
+</p>
+
+<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).
+<source>
+XML Configuration file URL: file:/path/to/context.xml
+WAR or Directory URL: jar:file:/path/to/bar.war!/
+</source>
+</p>
+
+</subsection>
+
+<subsection name="Upload a WAR file to install">
+
+<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>
+
+</subsection>
+
+<subsection name="Deployment Notes">
+
+<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 or
+liveDeploy=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>
+
+</subsection>
+
+<subsection name="Deploy Message">
+
+<p>If deployment and startup is successful, you will receive a Message
+like this:</p>
+<source>
+OK - Deployed application at context path /foo
+</source>
+
+<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 5 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 or
+    liveDeploy=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>
+
+</subsection>
+</section>
+
+<section name="Server Information">
+
+<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>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/images/add.gif b/webapps/docs/images/add.gif
new file mode 100644 (file)
index 0000000..0774d07
Binary files /dev/null and b/webapps/docs/images/add.gif differ
diff --git a/webapps/docs/images/asf-logo.gif b/webapps/docs/images/asf-logo.gif
new file mode 100644 (file)
index 0000000..22eb9d7
Binary files /dev/null and b/webapps/docs/images/asf-logo.gif differ
diff --git a/webapps/docs/images/code.gif b/webapps/docs/images/code.gif
new file mode 100644 (file)
index 0000000..d27307b
Binary files /dev/null and b/webapps/docs/images/code.gif differ
diff --git a/webapps/docs/images/design.gif b/webapps/docs/images/design.gif
new file mode 100644 (file)
index 0000000..f5db0a9
Binary files /dev/null and b/webapps/docs/images/design.gif differ
diff --git a/webapps/docs/images/docs.gif b/webapps/docs/images/docs.gif
new file mode 100644 (file)
index 0000000..d64a4a1
Binary files /dev/null and b/webapps/docs/images/docs.gif differ
diff --git a/webapps/docs/images/fix.gif b/webapps/docs/images/fix.gif
new file mode 100644 (file)
index 0000000..d59ad64
Binary files /dev/null and b/webapps/docs/images/fix.gif differ
diff --git a/webapps/docs/images/printer.gif b/webapps/docs/images/printer.gif
new file mode 100644 (file)
index 0000000..5021187
Binary files /dev/null and b/webapps/docs/images/printer.gif differ
diff --git a/webapps/docs/images/tomcat.gif b/webapps/docs/images/tomcat.gif
new file mode 100644 (file)
index 0000000..6175673
Binary files /dev/null and b/webapps/docs/images/tomcat.gif differ
diff --git a/webapps/docs/images/tomcat.svg b/webapps/docs/images/tomcat.svg
new file mode 100644 (file)
index 0000000..103ed0d
--- /dev/null
@@ -0,0 +1,573 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Generator: Adobe Illustrator 11 Build 196, SVG Export Plug-In . SVG Version: 6.0.0 Build 78)  -->
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"    "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+       <!ENTITY ns_flows "http://ns.adobe.com/Flows/1.0/">
+       <!ENTITY ns_extend "http://ns.adobe.com/Extensibility/1.0/">
+       <!ENTITY ns_ai "http://ns.adobe.com/AdobeIllustrator/10.0/">
+       <!ENTITY ns_graphs "http://ns.adobe.com/Graphs/1.0/">
+       <!ENTITY ns_vars "http://ns.adobe.com/Variables/1.0/">
+       <!ENTITY ns_imrep "http://ns.adobe.com/ImageReplacement/1.0/">
+       <!ENTITY ns_sfw "http://ns.adobe.com/SaveForWeb/1.0/">
+       <!ENTITY ns_custom "http://ns.adobe.com/GenericCustomNamespace/1.0/">
+       <!ENTITY ns_adobe_xpath "http://ns.adobe.com/XPath/1.0/">
+       <!ENTITY ns_svg "http://www.w3.org/2000/svg">
+       <!ENTITY ns_xlink "http://www.w3.org/1999/xlink">
+]>
+<svg 
+        xmlns:x="&ns_extend;" xmlns:i="&ns_ai;" xmlns:graph="&ns_graphs;" i:viewOrigin="176.7139 486.707" i:rulerOrigin="-156 -296" i:pageBounds="156 496 456 296"
+        xmlns="&ns_svg;" xmlns:xlink="&ns_xlink;" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/"
+        width="260.162" height="184.413" viewBox="0 0 260.162 184.413" overflow="visible" enable-background="new 0 0 260.162 184.413"
+        xml:space="preserve">
+       <metadata>
+               <variableSets  xmlns="&ns_vars;">
+                       <variableSet  varSetName="binding1" locked="none">
+                               <variables></variables>
+                               <v:sampleDataSets  xmlns="&ns_custom;" xmlns:v="&ns_vars;"></v:sampleDataSets>
+                       </variableSet>
+               </variableSets>
+               <sfw  xmlns="&ns_sfw;">
+                       <slices></slices>
+                       <sliceSourceBounds  y="302.294" x="176.714" width="260.162" height="184.413" bottomLeftOrigin="true"></sliceSourceBounds>
+               </sfw>
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?><x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='XMP toolkit 3.0-29, framework 1.6'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#' xmlns:iX='http://ns.adobe.com/iX/1.0/'>
+
+ <rdf:Description rdf:about=''
+  xmlns:pdf='http://ns.adobe.com/pdf/1.3/'>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+  xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+  xmlns:xap='http://ns.adobe.com/xap/1.0/'
+  xmlns:xapGImg='http://ns.adobe.com/xap/1.0/g/img/'>
+  <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&#xA;AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK&#xA;DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f&#xA;Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAuAEAAwER&#xA;AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA&#xA;AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB&#xA;UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE&#xA;1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ&#xA;qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy&#xA;obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp&#xA;0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo&#xA;+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8A9U4q7FXYq7FXYq7FXYq7&#xA;FXYq7FXYq7FXYq7FXYq7FXhH/OYHnWfQ/wAurfRLSUxXXmK49GQqaN9VtwJJqH3cxqfYnFXhP5Y/&#xA;85O+f/JU0enaw769okbBJLS8ZvrUKg0IhnarDj/I9R2HHFX2F+Xn5neT/P8ApP6R8u3glKAfW7KS&#xA;iXNuzdFljqaezCqnsTirK8VdirsVdirsVdirsVdirC/zM/Nvyd+XemC71255Xcqk2WmQUa5nI2+F&#xA;CRxUd3ag+nbFXx1+Zf8Azkn+YvneaW1tLh9C0NgwXTrB2V3Sm/rzji8m3UDitP2cVfV//OOfmabz&#xA;D+T3l+6uHMl1aRPYTsxqSbVzEhJ7kxKhxV6VirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVd&#xA;irsVfHn/ADlxdSa7+bvlvyvGx4RW0EVARtNfXJVqf7BY+uRlKgT3JAt5r/zkD5ZGgfmfqSRR+nZ6&#xA;gsd9agdOMq0f/ksj5h9nZvEwgnmNi2Z4cMiw/wAqebPMHlTXLfW9BvHstQtjVZEPwstQWjkXo6NT&#xA;4lOxzOan3v8Akl+cel/mX5a+tAJa69ZcU1fTlJojGvGWLluYpKbV6GqmtKlV6NirsVdirsVdirsV&#xA;eWfnr+eGl/lroywwBLzzPfox02wJqqL0+sT03EanoOrnYdyFXwh5i8x655j1i41jW7yS+1K6blNc&#xA;SmpPgABQKo6BVFB2xVnf5Q+SjrWh+d9Yli5w6XolylsadbqSNnTj8kiYf7IZg6zUeHKERzlIfL8U&#xA;3YoWCe4Pff8AnCfVTN5D1zTCamz1P11HcLcQIAPlWE5nNL6KxV2KuxV2KuxV2KuxV2KuxV2KuxV2&#xA;KuxV2KuxV2KuxV2KvjD8wm/Sv/OX8UTGsdrqGnCMNUU+rW0Mp6f5ammY2sNYZ/1T9zZi+oe9m/8A&#xA;zkx+Xc/mPytFrunRepqehc3ljUVeS0cAyAU6mMqHA8OXfNB2PqhCfAeUvv8A2uZqcdix0fIedQ69&#xA;m35OefrryN+YOla2kpjsjKttqqDo9nMwEoI78ftr/lKMVfaeqf8AOSH5KaaSs3meCZx0W1inuanf&#xA;YNDG69vHFWM3v/OYn5QW5YQ/pK8ArQwWqitPD1pIuvviqVT/APObH5cKR6GjaxIP2i8dqhB9qTvi&#xA;qmP+c2fIFd9C1Wnfa2/6q4qmFv8A85n/AJUSvxksdZtx/NJb25H/ACTuHOKp3bf85XfkpPBI7avN&#xA;BIisywS2lwGcqCeIZUdKmm1WGKvijzz5x1bzl5q1HzFqjlrm+lLrHWqxRDaOFP8AJjSij7+uKpNb&#xA;W1xdXMVtbRtNcTuscMKAszu54qqgbkkmgwE1uVfbHkL8uk8o/lTPoMiK+o3drPNqZHRrieIhlr4I&#xA;tEB9q5yWo1fi6gS/hBFfN2UMfDAjqwT/AJwdvyt/5usC20sVlOq77em0yMR2/wB2Cudc619ZYq7F&#xA;XYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXYq7FXxZKTJ/zmFc+oedNTmA5b/ZtG49fCgpmH2h/&#xA;cS9zbh+sPqDrsc4t2r57/Nf/AJxkGo3c+teSTFb3ExMlxo0hEcTMdybd/spU/sN8PgQNs3+i7Xoc&#xA;OX5/rcLLpusWIaF/zif56vFWTVr6y0pG6xgtczL81QLH90mZWTtnFH6bk1x0sjz2Z1pf/OIvlOIL&#xA;+lNbvrthSv1dYrZSe+zC4ND88wp9uTP0xA9+/wCptGkHUsms/wDnGf8AKS3AEunT3dOpmupxXam/&#xA;pNFmPPtjOeRA+H67bBpoPDv+ch/yt03yXrdjeaFbG30HUouCQ8pJBFcQ0DqXkZ2+NSrCrfzeGbns&#xA;vWHNAiX1BxdRi4TtySH8jfJdn5u/MOy07UIfrGl28ct3fw1IDRxrxUEqQaGV0By7X6g4sRkOfRhh&#xA;hxSp9N3X/OO/5P3FSdBETGnxRXN0nT/JEvH8M50dq6gfxfYHOOnh3JDqP/OKn5a3NTazajYt+yIp&#xA;0dfpEsbn/hsvj21lHMRP497A6SPmwzW/+cQr9A76H5himO/CG9haL5AyxGT/AIhmXj7cifqiR7t/&#xA;1NUtIehZh+S3/OP8Xk+5GveYXivNfTkLSKIloLYGqlwzBecjL3p8P45i9odqeIOCH09fNtw6fh3P&#xA;N7DfIz2VwijkzRuFA6klTmpxmpD3uRLk+bf+cJrrj+Yet2tT+90hpeP7J9O5hWp9/wB5tneunfZm&#xA;KuxV2KuxV2KuxV2KuxVZLNFDG0srrHGu7O5CqB7k4qks3nzyNC5jm8xaZHIOqPeW6nf2L4qmFhrW&#xA;j6iK6ff294KVrbypLt1r8BPjirAvzb/Pnyf+WrW9rqKS6hq90vqRaba8eaxVp6krMQEUkEL1JPbq&#xA;cVYFof8Azmp5BupVj1fR9Q0wNsZo/SuY1/1qGN6fJDir2Xyf+Yfkrzjam48taxb6iqgGSKNisyA9&#xA;PUhcLKn+yXFWRYq7FXYq7FXxRrBNj/zl/NVwC+rL8XtcWw+Hf/jJTMXXC8M/6pbMP1h9SZxLtnYq&#xA;7FWG+afzg/LnyvdNZ6vrUSXqGj2sKvcSofB1hV+B/wBamZmHs/NkFxjt8mqWaMeZRPk78zvI/nF5&#xA;ItA1RLm5hHKS1dXhmC1pyEcoRmXputRkdRosuLeQ2TDLGXJCfm/5JXzj5D1HSo05X8a/WtNPcXMI&#xA;JUD/AFxVP9lk+z9R4WUE8jsWOaHFGnl3/OI/lpodN1zzFMlGuJUsLcsKELCPUlpXsWkQfNc2Xbmb&#xA;eMPj+r9LRpI8y+hc0DmuxV2KuxV2Kvl//nClHP5oas4B4Lok6luwLXdqQPpoc9AdK+08VdirsVdi&#xA;rsVdiqXeYPMOi+XtIudY1q7jsdNtF5z3EpooHQAd2ZjsqjcnYYq+VfPf/OV3nXzNqp0D8stPlto5&#xA;mMcF0IfrGoT+8UIDrGD8mbvVcVSqz/5xn/Pjzs66h5t1RbUueX+5W7kurgA/yxx+sq/6pZaeGKsj&#xA;h/5wanMYM3nNUk7qmml1/wCCN0n6sVQt7/zhDr8B56Z5stppEIMZntZLfcb1qkk9KHFXzr5mtdUs&#xA;tfv9O1S5a7vtOuJbKaZndwWt3MZ4mSjcartUDFUsxVFabqeo6XfQ3+m3UtlfW7c4Lq3dopUbxV1I&#xA;IxV9Sfkr/wA5aNcT2+gfmG6K8hWO18wqAi1OwF2q0Vf+Mi0H8w6tir6lVlZQykMrCqsNwQe4xVvF&#xA;XYq+Kfzzro3/ADlLa6oxKJLdaReFiaApGsMLeG1ISMqzw4sco94LKBogvqPOEdw7FXkf55/mBrlj&#xA;Jp3kbykX/wAVeYSFE0Zo8FuzFOSt+wzlW+P9lQx2NDm27N0sZXlyfRFxs+Qj0jmUd5B/IHyP5bsI&#xA;31Oyh1zWnAa6vb1BMnqHciKKSqKAehI5e+Q1XamTIfSeGPlzTj08YjfcsJ/PDy5pXkHX/LH5geW7&#xA;WPTGhvlt9Rt7RBFHKpBk+wgCjnGkiPQbg5m9m5jnhLFM3s1Z4iBEg+hOu4zn3NQOkaLpuj20ltp8&#xA;IghlnnunRe8tzK0sh/4JzQdhtlmXLKZuXdXyYxiByR2VsnYqxjV/zO/L3SJWh1DzDYQzoaPD66PI&#xA;p/ykQsw+kZlY9Dmnyifu+9qOWI6pvoOvaRr+kwato9yt3p1zz9C4UMob03MbbMFOzoR0ynLiljkY&#xA;yFEM4yBFhV1WVYdLvJWJCxwSOxHWioTjhFzA8wsuRfPn/OEVoX83eZLzekOnxQnpSsswb/mVneOn&#xA;fYOKuxV2KuxV2KqF9e2lhZT315KsFpaxtNcTuaKkcYLMzHwAFcVfFHnPzR50/wCchPzJi8veXlaH&#xA;y7aO5sYnqsUUCkK97dU/bYdB2qFXcklV9U/lj+UnlH8u9IWz0a2WS+dQL7VpVBuLhh1q37KV+yg2&#xA;Huakqs1xV2KuxV8v/nf/AM4patrnmG+80eSp4Xn1GR7m/wBIuW9ImdyWd4JSOH7xjUq9KGvxb0Cr&#xA;5/1j8mPzX0iRkvfKepgL9qSC3e5jG9P7yASJ1PjiqRjyb5vMvpDQ9QMtePpi1m5culKca1xVPtG/&#xA;JT82dYdUsvKepUf7MlxA1rGe395cekn44q+zf+cffKv5m+VvJ50bzvPbzRwFf0RFHK01xbxU+KCV&#xA;6cCqmnDizU3FaUAVeo4q7FXx5/zmxpD2vnTy7rcdUN5YPbh12POzmL1qO4FyuKsl/Lz/AJyc8ra2&#xA;sNj5mUaHqZAU3TGtnI3Qnn1ir1o/wj+bOY1XY8474/UO7r+1z8epB2Oz2iKWKaJJYnWSKQBkkQhl&#xA;ZTuCCNiDmnIINFygVGXTNOmvYb6W1hkvbbkLe6eNWljDgq3ByOS1UkGhwjJIDhs0ei0LtE5FLxD/&#xA;AJyycP5F0ezQcp59WjaNdt+NvMp/GQZuuxI/vJH+j+lxNWfSPe9rgiEMEcQNRGoQE9+IpmmlKyS5&#xA;QCpgSsllihieWVxHFGpeR2NFVVFSST0AGEAk0EEvn2fVfOv5269e6foN9Jof5e6fIYbm9QMst2af&#xA;ZIBUtyG4QkKqkFqmgzfiGLRQBkOLKfx+C4ZMspobRZzof/OOv5U6VCiyaUdSnUUa4vZZJGb5opSL&#xA;7kzBydrZ5HY8PuDbHTQDP9G0XStE02HTNJtks9Pt+Xo20Qoi83LtQe7MTmBkyynLikbJboxAFBJv&#xA;zO1Aaf8Al35lu60ZNNuljP8AlvEyJ/wzDL9FDizQH9IfYxymol59/wA4P6S0eg+adXI+G6ura0Vv&#xA;e2jeRgP+kkZ2zqX01irsVdirsVdir50/5zJ/MGbSfK1j5PspOFxrrGa/KmhFpAwon/PWWn0KR3xV&#xA;mf8Azjd+WEPkj8vrae5iA17XES91KQijorrWG333HpI24/mLYq9YxV2KuxV2KuxV2KuxV2KuxV2K&#xA;obUdT03TbR7zUbuGytI/7y4uJFijX5u5VRir5U/5yz/MX8tfNfl7S7DQtZh1LW9NvS5W2V3iFvJG&#xA;yyUnC+kfjVPsscVSv8i/yi/LTzn5Ij1XVLSafU4J5rW9C3EkaFlIdCFQrT926980XaOuy4cnDGqI&#xA;vk5eDDGQsvdvKXkby35StXtdBgmtrZ6Vge6uZ4wf5ljmkkRCe5UCuaPPqp5Tc9/gHLhjEeSN8x3+&#xA;o6foGoX2m2hv9QtoJJbWyFazSKpKxjjv8R22yOCEZTAkaBZTJAsPHv8AlcP53/8Altpv+BuP+ac3&#xA;H8n6X/VPti4vjZP5rzz8wfPP5i+bfNvluw1Dyq1rqWjzG+g0ROZmuRVZDVGHPjxgbcDpXNhpdNiw&#xA;wkYy9Mutj8dWnJOUiAQ9D/5XD+d//ltpv+BuP+ac1/8AJ+l/1T7Yt3jZP5rv+Vw/nf8A+W2m/wCB&#xA;uP8AmnH+T9L/AKp9sV8bJ/NYp+ZX5v8A5qXnli40LVfKbaCutAWkdyxlWRwWXnHGrheRdfhI8DmV&#xA;pNBgE+KMuLh9zXkzTIoirR/kbzf+bvlHy1Y+XtO/LedobYENM6zK0kjtyeRzxoOTH6BtkNTp9Plm&#xA;ZyyfaEwnOIoRej+RPO35o6xr62fmPyf+hdNMTub71C1HWnFaV/azX6rS4IQuE+KXds348kyaIZ7q&#xA;jaqthKdKSCS/pSBbp3jhr4uY1kbbwA38Rmux8PF6r4fJuldbPlv8+YvzstdPS483apafoO7nEEVh&#xA;pcjJbl6NIA0bKkjgenWsnKhpnTdnHTH+7HqHfz+f6nAz8f8AFyfQ3/OLHl06N+TWkyOnCfVpJ9Rm&#xA;Hj6r+nEfphiQ5t3GeuYq7FXYq7FXYq+MfzQhXzz/AM5YWmgz1lsLe7sbB4zvW3gRbi5TvSrNLir7&#xA;OxV2KuxV2KuxV2KuxV2KuxV5j59/5yM/K7yb6kFxqQ1TU0qP0dpvG4cMO0kgIij36hn5e2KvAvMv&#xA;/OWP5p+arl9P8laWukxtXiYIzfXvHpUuy+mg+UdR/NkJ5IwFyIA80xiSaDF/+VT/AJo+b7sah5w1&#xA;h1kavx3sz3k617KgYoo9uYp4ZptR7QYIbRuZ8uXzP7XMx6GcuezJYf8AnH3yrBptwjXFxd6g8LrB&#xA;NIwSNJSpCOEQA7NvRmOak+0eQzGwjCxfU11/FOT/ACfEDnZYH+S+sfmZZeajoHlC8htrq6ZnubC/&#xA;K/VnMAPLkrAtyUdfT+Kg8BnSa7HhMOLINg6/CZA1F9k6KdbOmw/pxbZdTp/pH1IyNAW8U9UK9Pnn&#xA;I5eDi9F8PnzdlG63R2VsmndUUu5CooJZiaAAdSTiBaHhP5N8/On5r+bPzEkBbT7dv0do7EGhWgUM&#xA;tRswgjUsP+LM3vaH7nBDCOZ5/j3/AHOJh9UzJ7vmicx2KvEf+clQLS78i63cEjT9O1cC6O3H4mjl&#xA;FR/qwPm77G3GSPUj9f63E1XQvbQQQCDUHoc0jlN4pSXzN5z8q+V7ZLjX9Tg0+OSvpLK37x+PXhGv&#xA;J3pXfiMuw6bJlNQFsJ5BHmXzJ+dn5haf+Z/mby75e8qtLPbLN6EbyI0YluruRI0oh+KigChIHU50&#xA;/ZmilhieL6i4GoyiZ2fbWh6Ra6Noun6PaClpp1tFaW4/4rgQRr+C5s3HR2KuxV2KuxV2KvjfymCP&#xA;+c0p/rdK/pTU+POlKfUp/S/4144q+yMVdirsVdirsVdirsVeQfmX/wA5Ofl55MaaxtZv0/rcdVNl&#xA;ZMDEj+E1x8SL4ELyYdxir5W/Mf8A5yD/ADJ88GSC6vjpmjyVC6VYFoYmQ1FJXr6kte/I8fADFXme&#xA;Kvpj8jdTtb3yJBFFGkdxYyyW9zwVU5MDzRzTqSjipPU1zhvaDHKOosk8Mht5d/6/i7rQSBh5h6Fm&#xA;ic12Kvnvz6l35B/Nqz8z2CEQyzLqMSqeIY143UVf8upr7Pnedl5RqdLwS5gcJ/R9n2uj1MPDyWPe&#xA;+wdL1Ky1TTbXUrGQTWd5Ek9vKOjJIoZT9xznMkDCRieYc2JsWisgyYZ+b1p5vvfIGqWPlSFZ9Tu0&#xA;9F1LiN/q77TelXYuV+EAkddt6A5vZ8sccoMzsPv6NOYSMdnzl+Wn5m/mVoKR+RtEtNLsrmGWSsOp&#xA;q1vM87t8Su8ssS+p0UKaGgAGdDqtHhyfvJ2fd3fBwseWUfSHq36V/wCcqf8AqzaN/wAGn/ZRms4N&#xA;B/OP2/qci83c79K/85U/9WbRv+DT/sox4NB/OP2/qW83c8o/Mj8z/wAy/MAm8i6zaaZfXU0sY9HT&#xA;Ea4lSdGqqxvFLKvqbFSBXqQc2el0eHH+8jY2693xcfJllL0l9KflXb+bbXyJpVp5riWLV7aIQsqu&#xA;JGMSbRGUio9ThQNQnx70znNccZyk4+R+9zsIkIi2W5iNqB1xdH/RF2+sxQy6XFE8t4tyiyRelGpZ&#xA;i6uCpAAyzFxcQ4D6ixlVb8nzj/zjB5UtfNn5xal5tisltNE0Rpbu1tEUCOOa6ZktYgBt+7j5tt3U&#xA;Z3UIkRAJt1BO77PySHYq7FXYq7FXYq+M/wAyX/wb/wA5b2WsP+7s7q90+7Zz8NILlEt7htqV3EmK&#xA;vszFXYq7FXYq7FWGfmR+bnkn8vrD6xr16PrkilrXS4KPdTdacY6jitRTmxC++Kvjz80/+clPPvnk&#xA;TWVq50Py45KfULRj6kqntcTjiz1H7K8V8QeuKsQ/KyLyvP5wtbTzFbC4trn91bc2IjW4JBj9QAjk&#xA;G+zQ7VIrmB2mcowE4jUh93Vv0wiZgS5Po7zD5J8ta/pa6bf2UfoQrxtWiAjeDbb0io+Hp06eIzht&#xA;N2jmwz4oyu+d7373dZNPCYoh8/effyj17yuZLu3B1DRgSRdRr8cS9f3yD7P+sPh+XTOz7P7Wxajb&#xA;6Z936u90+fSyx78wnP8Azj5r4s/M11o8jUi1OHlED/v63qwA+cbP92YvtDp+PCJjnA/Ydv1NugyV&#xA;Ou99C5xDuWDeefKvnzV9WiufL+v/AKKskt1jkt+Ui8pQ7sX+AEbqyj6M3XZ2t02LGRlhxyvnQO23&#xA;e4eow5JSuJoe8sD81/lL+ZF9pj3Go65Hq7WKPLBbMZGc7VZY+S9WC9O+bnSdsaQTEYQ4OLyAHxou&#xA;Jl0mWrJuvel/5Q/8rK80ySeXdA85S6P9Qh9W2spZ51RouXx+kEDD4CwqPfbvmz1pw4xxzhxX5Bxc&#xA;XFLYGnv35Y+RfzR0DXri881+af03p0lq8MVp6s0nGZpI2WSkiqNkRh9OaLW6rBkgBjjwm+4D7nMx&#xA;Y5g7m3p2axyGGfmF+U3k/wA82pGq23paii8bfVIAFuEpWgLU+NN/st9FDvmZpddkwnbePc1ZMMZ+&#xA;95R/iv8AMz8lbm20/wAzMPMvk2Z/Ssr5XpcIBvxXmSwKr/ut6r2Vxm28HDrAZQ9OTr+P0uNxzxbH&#xA;cNSeb/zJ/Om9uNM8pk+XPJ0Lelf6g7D13DD7L8DyJZf91oafzNTEYMOjAlP1ZOn7P1qZyymhsHrH&#xA;5d/lN5R8i2gXS7f1tRdaXGqTgNcPXqAeiJ/kr9NTvmq1euyZjvtHucjHhEPezPMJuePedvy3/OXV&#xA;fNF/qGg+c/0ZpM7KbWx9a4X0wI1VhxRSoqwJ2zc6fWaaMAJQuXuDizxZCbB2eNfm7F+Z3lQQaDr3&#xA;nKXV21SJmm0+GedgIQwCmVXC7OwIUd6HNtopYcvrhDhrrQcbKJR2JeieSv8AnHD8+9H0SJtG83Q+&#xA;XlvlS5udPinuonSR0Hwy+nHxLqPhO5zYtD2r8mvJH5m+V/0x/jjzN/iL659W/R/76eb0PS9X1f75&#xA;Vpz5p08MVel4q7FXYq7FXYq+Xv8AnNjya81joXnG3Sv1Vm0y/YCp4SEy25PgquJB82GKva/yY87J&#xA;5z/LXRNbaTneNALfUfEXVv8Au5SR25leY9mGKs2xV2KrZJI4o2kkYJGgLO7EBVUCpJJ6AYq+aPzm&#xA;/wCctrTTWn0L8vmjvL1ax3GvOA9vEehFsh2lYH9tvg8A1cVeMfl95AvPzCvLrzP5l1SW6iNwUueT&#xA;tJdTyqqsQ7tXgvFgPGmwp1zS9rdrflqjEXMj4OZpdL4m5Oz3O18seXrXSP0PDp0C6ZSjWhjVkb3c&#xA;NXk3ud842etzSyeIZHi73bDDAR4a2eaeb/yBsLlmvPK9x9QuQeX1OYs0JPX4JN3j/EfLN9ovaIj0&#xA;5hfmP0j9XycLNoBzh8noHku+1y50OKLXrV7XWLT9xeB6FZGUCkyOvwsHG549DUds03aOLHHJxYiD&#xA;jluPLy8v1OXp5SMakPUE9IBBBFQdiDmCDTe841/8pLaHW7bzL5U42OqWkyzvYfZt5+JqyrT+6LrV&#xA;f5fl1zoNL21xQOLPvGQri6j39/3+9wMujo8UOY6PSB06U9s54uewnzt5H8z69qsV5pXme60W3jgW&#xA;F7WAyhWcO7GQ+nLGKkMB07Zt9BrsGGBjkxiZvnt5d7iZ8M5m4ypj/wDyqbz9/wBT/f8A/BXP/ZRm&#xA;d/K+k/1CPyj+pp/K5f55+15z518keZ/y91G01W01SZ2nLiPVrYyW8qTMDzQurFgXQnfl8Qrm90Pa&#xA;GLVxIrl/CXCz4JYiHv8A+Qeia/NDH5tufO155k0u+s3gGm3Tzt9XufUjZuQkmlUPHwZdh0NQaHfV&#xA;9qTgP3YgIyB57bhv04PO7eyZp3KYZ+afm/zN5Z0KGby5okmtanezC1gVAXSF3UlXkRPjYbdqDxYd&#xA;83Q6eGWR45cIG7TmmYjYMC8p/kVrGu6ovmj81b1tV1Njyi0YODBEOoWQp8FB/vuP4fEtXM7P2nGE&#xA;eDAKHf8Aj7y1QwEm5orzX+Rd9pepP5n/ACuvm0HWlq0mlhqWc46lFBqqV/kYFP8AVyODtMSHBnHF&#xA;Hv8Ax9/NM8BBuGxZB+VP5j+ZPMs9/ovmbQJ9J13R1Q3s3ErbPzNEoGPJWehIA5KQKhu2Ua7RwxgT&#xA;hK4yZYcplsRuHo2a1yHh35u+SvN1nNrXnD/lYl/omiIFli0yB7gBSEVFiiC3EacpHGwAG5zd6HPi&#xA;lw4/DEpd+3z5OJmhIXLi2eW/lJ+UXnn829Svtdl1ue0XTjGo127MtzM9ytDHHG5dXrGg5E8vh+Hx&#xA;zo4QERQFBwSSeb2z/oXX86P/AC8Gq/8AI2+/7Kskh6L+UP5dedPJv6W/xN5wu/Nf1/6v9U+tvO/1&#xA;f0fV9Th68s3956i1pT7OKvRcVdirsVdirsVY/wCf/J9l5x8nar5bvKLFqMDRpKRX05R8UUlP8iRV&#xA;b6MVfLf/ADiz50vvJX5han+XXmGtsmoztDHE/SLU4Dw4jt++Qca9yEpir7ExVK/MnmbQvLOjXGs6&#xA;5eR2Om2q8pZ5TT5KoG7M3RVUVJ6Yq+M/zS/PHzr+bWrnyv5Vt5rPy67fDZoaS3CqaerduDRU/wAi&#xA;vEd+RplWbNDFEymaiGUIGRoc0Nc/846uugI1vqXPX1BaRGFLVtv7tTTmtP5z18BnOw9pInLRj+77&#xA;+vv/AB9rsD2eeHY+pV/Io6rofmDWPK2rwSWlzJEl3FBIKCsbem5UjZuYddxUHjke34xy4YZYGwDW&#xA;3n/YuhJjMxL2rOSdq7FXYq7FXYq7FXYq7FUt8w6Bp2v6Pc6VqCc7a5XiSPtIw3V0J6Mp3GZGl1M8&#xA;GQTjzH2+TXlxicaLxryB5w1r8nPPM+i63yl8v3rKbrgCVKE0ju4V8R0ZR13HUDO3ywx67CJw59P1&#xA;H8ebpgZYZ0X1xZXlpfWkN5ZyrPa3CLLBNGQyOjiqspHUEZzE4mJo8w54N7q2RS7FXYq73xVTuLi3&#xA;treS4uJFht4VMk00hCoiKKszMdgAOpwxiSaHNBNPlfzv5j8wfnh+Yll5O8qBhoVtKTFKwIQqvwzX&#xA;047IgNEB33p9p6Z13Z2iGGNn6zz/AFOtz5eM+T7B8j+TdG8m+V7Hy7o8fCzso+Jc/blkO8ksh7s7&#xA;bn7htTNi0J9irsVdirsVdirsVdirsVfLP/OXf5WXENxb/mXoKNHNCY4tbMNVdWQhbe7BG9RtGx/1&#xA;PfFWefl3/wA5I+VdQ/KqTzN5mu0ttV0YLbavarT1Z7gqfSaCPbl9YCkgdFIb9la4q+cvNPm3z/8A&#xA;nr5uCUNnolo1YLRSxtrOIkgSSdPUmYd+p7cV6Yms1mPTw4pn3DqW3FhlkNB695O8l6J5U00Wemx/&#xA;vHAN1duB6szDux8B2XoM4LXdoZNTK5cug7vx3u7w4I4xQT/MFvUJbGzluYbqSFGubfl6ExA5oHFG&#xA;AbrQjqMsjmkImIPplzDEwBIPUNahew2Nhc3s54wWsTzSt4JGpZj9wxw4zOYiP4iB81nLhBPc8w/J&#xA;Tzn5v8y3mqHV7oXFlaIhjHpojLJKxIAZQtQFQ9a50XbujwYYRMI8MifsH4DgaLNOZNmwHq+cy7F2&#xA;KuxV2KuxV2KuxVjXnzyLpnm/SDZ3P7m7hq9leAVaJyO/ijftL/EDNj2d2jLTTsbxPMfjq4+o04yD&#xA;zeb/AJZ/mj5g/KrXZPKnmyKSTQS9QFq5t+Z/v7c/txP1ZR8x8VQet1Gmx6vGMmM+r8bF1UJyxS4Z&#xA;PqrTNT0/VLCDUNOuI7qyuVDwXETBkZT3BGczkxygeGQohzgQRYRWRZOxVSurq2tLaW6upUgtoVLz&#xA;TSMEREUVLMxoABhjEyNDcoJp8v8A5n/mrr/5n65D5E8hQTTadcy+kxQcZL1lNeTV+xbpTl8VNvia&#xA;nTOp7O7OGL1S+v7v2uvz5+LYcn0j+SX5N6V+Wvlv6uCl1r96FfV9RUGjMKlYoq7iKOu38x+I+A2z&#xA;jPR8VdirsVdirsVdirsVdirsVSDz3rvlfQ/KWp6h5oaMaGsDx3kUgDCZJFK+iqEjm0leIXvir81d&#xA;SfTpdTupdPhkt9MedzawyMJJI4WYmNGeihmCbV74q+q/y8tfLEHlOyPlsV06VefqGnqvJ0czH/fl&#xA;RQ+HQbUzzrtWeY5z4v1D5V5eTv8ATCAgOFkma5yHYq7FWIfm3qBsfy81mRftSxLbge08ixN/wrHN&#xA;r2Jj4tVHys/Z+txdZKsZSD/nH3TRb+S5rwj4767kYH/IjVYwP+CDZm+0mQnNGPQR+/8AAauz4+gn&#xA;zenZzrnuxV2KuxV2KuxV2KuxVjnnbyLovm3Tfqt+np3MYJtL1APUiY+Feqn9pe/zocz9B2jk00rj&#xA;vHqPx1aM+njkG/N4/ovmf8xfyX1w2rr9b0W4fkbVyxtLgDq8T0Jikp12r4gimdkPA12PiHP7R7/x&#xA;7nUETwyovpX8vvzc8m+eLZf0ZdCDUgKzaVcEJcKR1KitJF/ykr70O2aHVaDJhO4uPf8Ajk5ePNGX&#xA;vTXzl578seTtMOoa9eLboa+hAPimmYfsxRjdj+A7kZVp9LPMaiP1Mp5BEbvmXzJ54/Mb87vMcflj&#xA;y1ZyQ6SzhksENFCKf96L2YbcV60+yDQAM1Cep0eghgF85d/6nX5cxn7n1H+S35IaB+Wmkkxlb3zD&#xA;eIo1LVGHyJhgrukQbfxbqewGe0vSsVdirsVdirsVdirsVdirsVQup6np+l6fc6jqNwlrY2kbTXNx&#xA;KeKJGgqzMfYYq+HfzQ/MTzL+dvnmHSNFR4PLtm7fo+2eoUIKh7y5pX42BoB+yPhG5JajU6mGGBnM&#xA;7BnjxmZoPQ4Pyv8AK8fk1vK5i5W8g5yXVAJjcU2nr/MO3am3TOGl2xmOfxfs6V3ft73dDSQ4OH7X&#xA;kehaz5g/KfzbLpWqK0+jXLB5VQfDJGaqlxDU7MKfEv0HsR0uowYu0MAlA+ocvI9x/HmHXY5ywTo8&#xA;n0Fp2o2OpWMN9YzLcWlwoeGZDUEH/Pcds4jNhljkYyFSDuYTEhY5KzTQoaPIqnwJAOCOOR3AKmQH&#xA;VyzQueKyKx8AQTiccgLIKiQPV5t/zkDctD5FijHS5voYm37BJJP1x5vPZwf4Qf6h+8OH2h/dj3p3&#xA;+UNt9X/LnRkoQXjklNRQ/vJnf9TbZjdtyvVT+H3Bs0Y/dBmOalynYq7FXYq7FXYq7FXYq7FUHq+j&#xA;6ZrFhLYanbJdWkwo8Tjb2II3Vh2I3GXYNRPFLigaLCeMSFF4R50/JTXdCnOq+VpJby1ib1FjjJF5&#xA;ARuCvGhenYr8Xt3zstB25jzenJ6Z/Yf1fF1OfRShvHcJFJ5F/M7zRY3PmTUI7m8eKMFHvZHa6mRe&#xA;0SvV2CjcdK/s1OZsu0NNimMVgHy5D39zQMGSQ4qfTP8AziV518hXnlX/AA3p1lBpPmi0XnqUIr6l&#xA;6F2+sq7lnfr8SV+A9AFIzYtD6BxV2KuxV2KuxV2KuxV2KuxV2KvjX/nI7847/wA+eYk/L/ye7XGj&#xA;QTiO4kgNRfXSnswNDBEeh6Egt0CnIZMkYRMpGgExiSaDJvy88h2PlDRRbJxl1G4o9/dAfbcDZVPX&#xA;gn7P3988/wC0+0Zamd8oDkP0+93um04xx82vOP5meVvKoMV7OZ7+lVsLejy+3PcKg/1j8q4dF2Tm&#xA;1G4HDDvP6O9c2qhj25l47r/mfzt+ak6aXovlxrmO3f1I47SF7meOuxLzAURT32UZ1/Z/ZcNNdEkn&#xA;n3fJ1OfUnJzDFvNXl7z35Lu/8P8AmCG60uQoLhbNpaxMsg+2nps0TVpQkHqKHcZseEXdbtFsbySH&#xA;Yqu9ST0/T5H068uFTx5UpWnjir2HyZ+T/wCfGr+U9O1/yreSS6VdKzWkEOo+iQI5HRlMcjxoPjjI&#xA;pXKMmmxT+qMT7wGcckhyJCOudA/5yq0IfvtM1G4VDuscNvqFadqwidj07HMXJ2Tpp84D4bfc2x1W&#xA;QdUvl/Oj8y9CmEPmHQ0iPQpc209pKT1/aNP+FzCyezunly4o/H9bbHX5Bzop1pv/ADkboslBqWkX&#xA;FsfG3dJx8/j9HNfl9mZfwTB94r9bkR7RHUMv0r82/wAvtSoserx28ndLoNb0/wBlIFT7mzWZuxdT&#xA;D+HiHlv9nP7HIhrMcutMst7i3uIlmt5Umib7MkbBlPyIqM1s8coGpAg+bkxkDuFTIJdirsVdirsV&#xA;dirH/PXm608q+XZ9Umo8391ZwH/dk7A8V+Qpyb2GZ/Z2iOoyiP8AD19zRqMwxxvq+cfL9n+Yf19/&#xA;Omi29ytzYytfnU41CgPyLOyhqCTqeSqDt1FM7+WoxYyIGQBOwDoxjlIE0+1/yK/O7S/zJ0IpP6dp&#xA;5nsVA1LT1OzrsPrEAO5jYncdVOx/ZJyGt6jirsVdirsVdirsVdirsVfO/wDzlT+dh8vaa/kfQJ6a&#xA;7qUf+5S4jPxWtrINoxTpJMD8wm/7SnFWA/k3+W48v6eNZ1OL/c1ep8EbDe3hbfhQ9Hbq3h08a8V2&#xA;52n4svCgfRHn5n9Q/HR3Gi03COI8yl/5qfm5LYTt5d8sP6mqM3pXd3GOZiY7elFStZa9T+z0+10v&#xA;7I7G4gMmUbdI/pP6mGr1demPzZX+UH/OJcl6I/MP5lNKZJj6sehB2EjV35XkoPKp68FNfFuq51wF&#xA;OqfT2j6Jo+i2Een6RZQafYxf3dtbRrFGPfigAqe5xVj35mflh5Y/MLy++k61CBKgLWGoIB69tKf2&#xA;o2PY0HJejD6CFXwV+Z35WeaPy715tL1qHlbyFmsNRjB9C4jBoGU/st/Mh3X5UJVYdirsVfb3/OHX&#xA;mKPUfyrfSS9Z9EvpovTrUiK4/wBIRvYM7yD6MVe7YqsmhhniaKaNZYnFHjcBlI8CDtirDde/JX8q&#xA;Ne5HUvK1g0j15zQRC1lJPcyW/pOT9OKvMfMn/OF/5eXwZ9D1K+0aY/ZRit3AP9g/CT/krirzTVv+&#xA;cTvzh8tSPdeVNVh1EDoLS4exuWp4rIVj/wCSpyGTHGYqQBHmmMiNwxq58/fnT5ImW382aVMYgeIO&#xA;oWzRch0pHcRhUfp1+LNVn7C02TcDhPl+rk5UNbkj1tlGgf8AOQHlS94x6rBNpUx6uR68P/BIOf8A&#xA;wmaPUezmWO+MiX2H9X2uZj7QifqFPRNK1vR9Wg9fTL2G9iHVoHV6V7NQ7H2OaTPpsmI1OJi5sMkZ&#xA;cjaNyhm7FXYqlGq+VNC1fULe91S2F69opW2hn+OFCxqzekfhLGg3avTbMzDrsuKBhA8N8yOfz/U0&#xA;zwRlKzumyqqqFUAKBQKNgAO2YhJJttp84edta0nyl+Y0Gu+Qr/0NQtH9W4WAfuI5wfiRSDxdJBUO&#xA;lOPUd6D0PsqWc4R4w36d5Hm6HUiAn6H2P+TH5xaN+ZXlwXcIW11u0ATVdM5VMbnpJHXcxP8Asnt0&#xA;PTNk470PFXYq7FXYq7FXYqwf84fzP078uvJtxrU/GXUJawaTZMf765YbVA34IPic+G3UjFXyR+U/&#xA;lPUvNnmK589+ZXa65XDzRPKB/pF2Wq0h7cIz0AFK7D7NM5/tztLwo+HA+uXPyH6z+OjnaLT8R4jy&#xA;DOPzf89t5Y8v+hZScdX1HlHbEdY0A/eS/MVovufbNJ2J2f4+TikPRD7T3fr/AGubrM/BGhzKf/8A&#xA;OK/5HQWtjb/mF5ltxLqV3+90K2mBPoxHpdMD1kk6x+C/F1O3dukfTGKuxV2KpL5v8neXfN+hz6J5&#xA;gs0vLCffi2zxuPsyROPiR17EfqxV8N/nR/zj/wCZfy5umvYeep+VpXpb6mq/FFyPwx3Kj7Ddg32W&#xA;7UO2KvKcVeu/84z/AJoQeRvPwi1KX0tC11Vs7+RjRIpA1YJ29kZipJ6KxPbFX3sCCKjcHocVbxV2&#xA;KuxV2Kqc9vBcQvBcRrNDIOMkUihlYHsVNQcVeX+cP+cZ/wAovM3OQ6QNIvH/AOPrSmFsQf8AjDRo&#xA;D/yLrirw/wA0f84fef8AQZ21DyRrKal6dTHEWNhejwVH5GJvmXT5ZGURIURYSCRyYf8A8rL/ADW8&#xA;jXo03zjpUslK8Y7+JreVlXasU6rxdf8AKo3zzT6rsHBk3j6D5cvl+qnLx62cee7P/LX5zeSdbKxS&#xA;XJ0y7bb0byiKT/kygmP5VIPtnO6rsLPi3iOOPlz+X6rc/HrYS57FnSsrKGUhlIqCNwRmmIINFywW&#xA;8CWLebfLnmTzCG0+PVV0jRm2n+rK0lzOpG6s7FFjXtRa17nembXRavBp/VwmeTz2A93P5uLmxTnt&#xA;dRSjR/yO8g6cVea2l1GVTUPdyEiv+pH6aEfMHL83tBqJ/TUfcP12whocY57sS80+XfMH5YeaLfz3&#xA;5JdorSKStxbAExxBz8UUigjlbydP8n58Tm97H7WGccE/7wf7L9vf8/dhavS8BsfT9z6x/Kf81NB/&#xA;MbyzHq2nEQXsVI9U0xmDSW03genJHpVHpuPAggb1wmbYq7FXYq7FVK6ure0tprq5lWG2gRpZ5nIV&#xA;ERByZmJ2AAFTir4W89eZtV/PD81xHas8Xlyw5RWXb0bJGHqTsDt6s7U/4Vei1zE12rjp8Rmfh5lt&#xA;w4jOVB7Zp2n2enWMFjZxiG1tkWKGMdAqig655xmyyyTM5G5F6CEREUOTxPS9Gb81/wA/YNJlLNo1&#xA;tMUuKbUsrEky0I6es9QD25jPQ+zNL4OCMevM+8/inQ6nJxzJfdcUUUUSRRIscUahY41AVVVRQAAb&#xA;AAZntC/FXYq7FXYqo3dnaXtrLaXkKXFrOpjnglUOjowoVZWqCD74q+T/AM7f+cTri0a48wfl7E09&#xA;pvJdeX6lpY+5NqTu6/8AFZ+Ifs16BV8xyRyRSNHIpSRCVdGBDBgaEEHoRiqLv9b1nUEjS/v7m7SF&#xA;VjhWeV5QiIOKqocmgUbADFU/8k/mp588l38N1oOrzwxREcrCR2ktJFH7MkDHgRTaoow7EYq/Qb8v&#xA;POFv5y8laR5mt4/RXUoBI8NeXpyqxjlQNtULIjCuKsixV2KuxV2KuxVB6rpGlavZSWGq2cF/ZS7S&#xA;W1zGssbfNHBGKvD/AD5/zh75B1r1Lny1PL5cvmqREtbizY/8YnYOlT/K9B/LirxDWPy7/Pr8pmea&#xA;GKW90OI8nuLOt5ZcQakvERzhHixVfnmJqdDhzj1xvz6/Ntx5pw5FNvKv/OQWi3fCDzDbNp0/Q3UI&#xA;aWAmnUqKyJv2+L55zWr9nJDfEeLyPP58vudhi7QB2kKepWGo6fqNst1YXMd1bP8AZmhcOp+lSc57&#xA;LhnjPDMGJ83YRmJCwbROVMlk0MU8LwzIJIZVKSRsKqysKEEHqCMlCZiQRsQggEUXiepWHmf8m/OM&#xA;PnDyiS+jSH07i3erxhHYFrafuY2oOD9QadwCe77J7UGojwy2yD7fN0mq0xxmx9L7C/Lr8wvL/n3y&#xA;zBr+iyExSfBc2z/3tvOAC8Ug8RXY9CNxm5cRk+KuxV2Kvm7/AJzA/NOTTNHg8haVKRf6ugn1ZkJ5&#xA;JacqJDt3mdTyH8op0bFUg/KjyOvlfy2n1iMDVr8LNfsaVXb4Ia/8Vg7/AOVXOB7Z1/j5aH0R5fpL&#xA;vNJg4I2eZZRr1/8Ao/Q9Rv8A/lktZp/+RUZf+Ga7SwE8sInkZAfa35ZVEnyYp/zg/o0Ump+atccV&#xA;mghtbKJu/Gd3ll/GBM9PecfWeKuxV2KuxV2KuxV2KvOfPf5Aflj521UatrGmtHqRFJ7m0kMDTdKG&#xA;Xjs7CmzUr+GKsb/6FD/Jv/lmvv8ApLb+mKu/6FD/ACb/AOWa+/6S2/pir0/yZ5Q0byf5as/LmirI&#xA;mmWPqfV1lcyOPWleZ6sevxyHFU7xV2KuxV2KuxV2KuxV2KvMfzC/5x1/LLzr6lzcaf8AovVn3/Se&#xA;ncYJGbrWSOhikr3LLy9xir5080f846/nH+XVzJqnlK6k1nT1NTLpwYXHFenrWR58/kvMZTmwQyx4&#xA;ZgSDKEzE2DSH8r/85ABZRZea7IwSoeD3lup+FgaH1YT8Qp34/wDA5zes9nBzwn4H9B/X83Y4u0Ok&#xA;w9b0nWdK1e0W80y7iu7ZukkTBgD4Hup9jvnM59PkxS4ZgxLsYZIyFg2q31jaX9pNZ3kKz2s6lJoX&#xA;FVZT2ORxZZY5CUTUgmURIUeTxy2svzN/KLzbcaj5Eil1DS9RRkNuIZLqMqDVUnij35Rk/A+3z3YZ&#xA;3Wg7YxZYXOQhMc7NfK/wHS59JKMthYZVB/zlL+eWlMZNc8owTWiEmRzaXlsaClaS83jp/sTmxx6r&#xA;FM1GUZe4guPLHIcwQ9C8jf8AOYH5ea7NFaa9bzeW7uUhRLMwns+RNADOgVl+bxhR3OXsHulvcW9z&#xA;BHcW0qTW8yh4Zo2Do6MKqysKggjoRir849U/MZtX/M6688azZnUTNdNcxWTSekFVPhtk5cZPhhVV&#xA;FKb0yjU4pZMZjE8JPVnjkIyBItnP/Qyn/fuf9Pv/AF4zm/8AQx/tn+x/487D+Uv6P2/sQWuf85A/&#xA;pXRNQ0z9A+j9etprb1vrfLh60ZTlx9Fa05VpXLcHs74eSM+O+Eg/T3f5zGev4okcPPz/AGPU/wDn&#xA;B7UUbTvNmmkgPFNaXCjuRIsqH7vTH350zrn1DirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsV&#xA;dirsVdirsVdirBPzB/JP8uvPivJremKmpFaJqtofQul2oKuopJTsJFYYq+afOP8AzjN+afkK7fWP&#xA;JF7LrNjGeX+iVjvVUb0ktqlZh/qcq/yjK8uKGSPDIAjzZRkYmwl/lf8AP1opf0f5vsmgnjb05LyB&#xA;CCrA0PqwH4lI78f+BzmtZ7OA74T8D+g/r+bsMPaHSfzet6TrOlavZreaZdR3ds3SSJgwB8D3B9jv&#xA;nMZ9PkxS4ZgxLsoZIyFg2jMpZsJ87flR5Z8zxSTLCthqxBKX0Kgcm/4uQUEg9/te+bjQds5cBAke&#xA;KHcf0H8BxM+kjPlsWPfkJ+aPmL8t/PS+QfNEjHQbycWyo7FktbiZh6U8LH/dMpYcxsN+WxBr3OHN&#xA;HLATibiXSzgYmjzfWP8AyrzyB/1LOlf9INt/zRlrF3/KvPIH/Us6V/0g23/NGKu/5V55A/6lnSv+&#xA;kG2/5oxVHaV5Z8uaRJJJpOlWenySgLK9rbxQMyg1AYxqtRiqZYq7FXYq7FXYq7FXYq7FXYq7FXYq&#xA;7FXYq7FXYq7FXYq7FXYq7FXYq7FXYqwT8xvyU/L/AM/xFtbsBHqQXjFq1pSG6XsKuARIB2EisB2x&#xA;V856t/ziZ+bHl/VpT5M1qO4sZhtcpcPYT0B2SVFJBp4hj8hleTFCYqQEh5i2UZGPI0of9C+f85Nf&#xA;9XeT/uLS/wDNWUfkNP8A6nD/AEo/Uz8ef84/N3/Qvn/OTX/V3k/7i0v/ADVj+Q0/+pw/0o/Uvjz/&#xA;AJx+aX3n/OK/576ldpcalLBdTgKguLi/MzqoNQAzVagqTTMjHijAVECI8tmEpEmybf/Z</xapGImg:image>
+    </rdf:li>
+   </rdf:Alt>
+  </xap:Thumbnails>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+  xmlns:dc='http://purl.org/dc/elements/1.1/'>
+  <dc:format>image/svg+xml</dc:format>
+ </rdf:Description>
+
+</rdf:RDF>
+</x:xmpmeta>
+                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <?xpacket end='w'?>
+                       </metadata>
+               <switch>
+                       <foreignObject requiredExtensions="&ns_ai;" x="0" y="0" width="1" height="1">
+                               <i:pgfRef  xlink:href="#adobe_illustrator_pgf">
+                               </i:pgfRef>
+                       </foreignObject>
+                       <g i:extraneous="self">
+                               <g id="colors" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">
+                                       <path i:knockout="Off" fill="#F8DC75" d="M237.682,33.617c-0.019-5.071,0.402-24.5-2.5-30.4
+                                               c-7.869,2.99-19.189,11.68-22.431,21.588c-15.532-2.32-35.042-2.045-50.381,0.608C159.808,14.753,147.946,7.596,138.243,3
+                                               c-4.093,6.907-3.906,19.92-3.445,31.279c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,22.2,74.399,52.799,92.399
+                                               c31.481-17.988,50.972-49.057,50.101-93.12C237.656,33.603,237.67,33.609,237.682,33.617z M216.485,25.421
+                                               c0.114,0.021,0.229,0.042,0.344,0.064C216.715,25.463,216.601,25.441,216.485,25.421z M214.527,25.083
+                                               c0.275,0.044,0.554,0.094,0.83,0.141C215.081,25.177,214.805,25.129,214.527,25.083z"/>
+                                       <path i:knockout="Off" fill="#D2A41F" d="M91.013,133.328c46.474,4.115,90.927,22.883,141.085,49.085h25.598l0.361,0.191
+                                               c0.516-2.575-1.888-6.025-4.752-9.229c-4.941-5.528-11.623-6.145-19.707-5.951c-5.738-6.83-41.004-43.861-41.004-43.861
+                                               l-4.808,3.395c-38.75-21.75-49.155-62.513-49.155-62.513c-33.792,8.148-69.78,28.334-90.391,49.761l-3.118,3.292
+                                               c-1.489,1.597-2.928,3.174-4.312,4.723C18.967,146.661,3,170.87,3,175.213v2.25h23.816l-0.505-0.668
+                                               c-2.449-12.943,4.443-23.341,10.279-30.385c4.179-5.044,11.1-9.801,21.968-12.457L91.013,133.328z"/>
+                               </g>
+                               <g id="tomcat" i:layer="yes" i:dimmedPercent="3" i:rgbTrio="#4F00FFFF4F00">
+                                       <path i:knockout="Off" d="M240.682,32.617c-0.019-5.071-1.598-26.5-4.5-32.4c-7.869,2.99-22.189,12.68-25.431,22.588
+                                               c-15.532-2.32-33.042-2.045-48.381,0.608C159.808,12.753,146.946,4.596,137.243,0c-4.093,6.907-5.906,22.92-5.445,34.279
+                                               c-0.018,0.013-0.037,0.024-0.054,0.037c1.8,47.7,25.2,77.399,55.799,95.399c31.481-17.988,53.972-53.057,53.101-97.12
+                                               C240.656,32.603,240.67,32.609,240.682,32.617z M214.485,23.421c0.114,0.021,0.229,0.042,0.344,0.064
+                                               C214.715,23.463,214.601,23.441,214.485,23.421z M212.527,23.083c0.275,0.044,0.554,0.094,0.83,0.141
+                                               C213.081,23.177,212.805,23.129,212.527,23.083z M235.784,36.059c0.81,39.69-19.44,71.279-47.79,87.48
+                                               c-48.118-23.977-57.183-84.71-48.977-117.289c2.283,12.454,6.424,20.266,15.394,24.098c19.533-5.591,46.423-6.033,66.231-0.57
+                                               c8.255-6.001,11.456-15.169,13.204-23.18C236.029,15.921,235.777,36.055,235.784,36.059z"/>
+                                       <g>
+                                               <rect x="133.209" y="90.51" i:knockout="Off" width="26.245" height="3.239"/> 
+                                               <rect x="133.209" y="82.732" i:knockout="Off" width="26.245" height="3.24"/> 
+                                               <rect x="213.35" y="90.51" i:knockout="Off" width="26.244" height="3.239"/> 
+                                               <rect x="213.35" y="82.732" i:knockout="Off" width="26.244" height="3.24"/> 
+                                               <g>
+                                                       <path i:knockout="Off" d="M204.1,63.524h-27.188h-3.021h-12.561v-2.917h13.31c1.639-7.018,1.963-13.725-0.014-17.125
+                                                               c-0.844-1.446-2.01-2.121-3.674-2.121c-7.609,0-10.753,8.046-10.884,8.389l0.002-0.003l-2.73-1.024
+                                                               c0.156-0.42,3.965-10.278,13.612-10.278c2.692,0,4.834,1.235,6.191,3.57c2.41,4.141,2.127,11.305,0.494,18.592l23.354,0
+                                                               c3.103-9.116,9.581-13.414,20.405-13.414v2.916c-11.732,0-15.019,4.973-17.366,10.498l12.743,0l-0.029,2.901L204.1,63.524z"
+                                                               />
+                                                       <path i:knockout="Off" d="M206.017,77.925l0.019-0.003c-3.459-5.101-4.555-9.456-3.108-14.413l-2.971,0.015
+                                                               c-1.035,3.3-0.62,8.273,1.929,12.54H172.21c1.806-3.616,3.479-8.025,4.702-12.54h-3.021
+                                                               c-1.348,4.786-3.241,9.524-5.372,13.277l-0.689,1.213l16.652,10.482l-9.375,6.178l1.605,2.436l10.479-6.908l11.312,7.382
+                                                               l1.554-2.468l-10.488-6.488c0,0,15.682-10.187,16.461-10.684C206.024,77.937,206.021,77.931,206.017,77.925z M187.156,86.733
+                                                               l-12.317-7.755l24.071,0.006L187.156,86.733z"/>
+                                               </g>
+                                       </g>
+                                       <polygon i:knockout="Off" points="114.745,73.635 122.087,95.391 99.788,80.434 "/>
+                                       <polygon i:knockout="Off" points="93.261,83.153 101.147,96.75 84.559,88.32 "/>
+                                       <polygon i:knockout="Off" points="75.313,93.759 79.12,107.356 67.699,99.47 "/>
+                                       <polygon i:knockout="Off" points="196.871,130.199 189.801,141.077 202.31,135.366 "/>
+                                       <polygon i:knockout="Off" points="208.021,142.709 196.6,151.411 212.372,147.332 "/>
+                                       <polygon i:knockout="Off" points="180.282,24.686 188.713,43.178 194.151,24.414 "/>
+                                       <polygon i:knockout="Off" points="137.588,51.608 150.913,58.678 138.947,59.494 "/>
+                                       <polygon i:knockout="Off" points="140.851,66.021 149.009,69.284 142.211,71.188 "/>
+                                       <polygon i:knockout="Off" points="236.031,56.775 225.153,61.398 234.127,62.757 "/>
+                                       <polygon i:knockout="Off" points="231.68,70.1 223.25,72.548 230.048,74.995 "/>
+                                       <path i:knockout="Off" d="M256.305,173.375c-4.941-5.528-14.623-8.145-22.707-7.951c-5.738-6.83-39.004-41.861-39.004-41.861
+                                               l-2.306,2.903l40.162,43.238l1.743-0.149c10.912-0.935,17.115,4.983,18.757,6.819c1.204,1.347,1.931,2.575,2.326,3.539h-22.075
+                                               c-50.624-26.416-95.078-45.044-142.297-49.112c0.104-6.571,1.273-14.01,3.518-22.299l-4.343-1.177
+                                               c-2.308,8.521-3.523,16.236-3.661,23.133c-4.92-0.326-9.872-0.495-14.868-0.495c-4.237,0-8.095,0.394-11.614,1.077
+                                               c-4.59-4.587-8.5-8.959-11.823-13.108c21.936-22.85,58.15-43.498,89.533-51.092l-1.015-4.396
+                                               c-33.792,8.148-70.78,30.334-91.391,51.761c-9.565-12.91-13.36-23.504-14.487-31.532c-1.424-10.14,0.997-19.441,6.999-26.899
+                                               C47.15,44.099,60.502,43.277,74.23,45.586c-0.268,2.167,0.017,4.24,0.885,5.522c3.631,5.363,23.144,7.246,34.791,2.049
+                                               c-8.595-12.045-26.006-17.926-30.83-15.569c-1.598,0.781-2.804,2.214-3.63,3.886c-4.745-0.849-9.458-1.48-12.903-1.455
+                                               c-12.107,0.088-21.363,4.319-28.296,12.932c-6.802,8.451-9.551,18.944-7.95,30.347c1.516,10.8,6.863,22.286,15.825,34.198
+                                               c-1.489,1.597-2.928,3.174-4.312,4.723C15.967,146.661,0,172.87,0,177.213v2.25h28.816l-0.505-2.668
+                                               c-1.627-8.601,1.623-19.351,8.279-27.385c4.179-5.044,11.1-10.801,21.968-13.457c9.663,9.431,21.975,19.446,35.679,29.109
+                                               h21.414v-2.25c0-2.539-1.259-4.762-3.545-6.257c-3.383-2.212-8.605-2.517-13.402-0.881c-4.573-5.093-7.137-11.896-7.691-20.347
+                                               c46.474,4.115,90.927,22.883,141.085,49.085h27.598l0.361-1.809C260.572,180.029,259.169,176.579,256.305,173.375z
+                                                M33.125,146.539c-6.816,8.227-10.429,19.094-9.601,28.424H5.372c3.647-7.894,18.176-30.712,39.644-53.76
+                                               c2.958,3.656,6.253,7.35,9.872,11.073C44.347,135.444,37.437,141.336,33.125,146.539z"/>
+                               </g>
+                       </g>
+               </switch>
+               <i:pgf  id="adobe_illustrator_pgf">
+                       <![CDATA[
+                       eJzdffle8sqy6H0B3gFUFGQwEyEBB2YHUEFwwJlJRJlkWGuv88d59lvVSUgICWmQ75x1716/7aed
+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==
+                       ]]>
+                       <![CDATA[
+                       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==
+                       ]]>
+                       <![CDATA[
+                       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==
+                       ]]>
+                       <![CDATA[
+                       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==
+                       ]]>
+                       <![CDATA[
+                       /+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==
+                       ]]>
+                       <![CDATA[
+                       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>
diff --git a/webapps/docs/images/update.gif b/webapps/docs/images/update.gif
new file mode 100644 (file)
index 0000000..31e22ab
Binary files /dev/null and b/webapps/docs/images/update.gif differ
diff --git a/webapps/docs/images/void.gif b/webapps/docs/images/void.gif
new file mode 100644 (file)
index 0000000..e565824
Binary files /dev/null and b/webapps/docs/images/void.gif differ
diff --git a/webapps/docs/index.xml b/webapps/docs/index.xml
new file mode 100644 (file)
index 0000000..0254c99
--- /dev/null
@@ -0,0 +1,173 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Documentation Index</title>
+  </properties>
+
+<body>
+
+<section name="Introduction">
+
+<p>This is the top-level entry point of the documentation bundle for the
+<strong>Apache Tomcat</strong> Servlet/JSP container.  Apache Tomcat version 5.5 
+implements the
+Servlet 2.4 and JavaServer Pages 2.0 specifications 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>
+
+</section>
+
+
+<section name="Apache Tomcat User Guide">
+
+<p>The following documents will assist you in downloading, installing
+Apache Tomcat 5, 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 <a href="http://java.sun.com/products/servlet/download.html">Servlet
+    2.3 Specification</a>.  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 <code>Manager</code> 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 5, 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 5 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> -
+    Confuguring logging in Apache Tomcat.</li>
+
+</ol>
+
+</section>
+
+
+<section name="Reference">
+
+<p>The following documents are aimed at <em>System Administrators</em> who
+are responsible for installing, configuring, and operating a Apache Tomcat 5 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 a Apache Tomcat 5 <code>conf/server.xml</code> file.
+    </li>
+<li><a href="http://jakarta.apache.org/tomcat/connectors-doc/index.html"><strong>JK Documentation</strong></a>
+    - Complete documentation and HOWTOs on the JK native webserver connector,
+      used to interface Apache Tomcat with servers like Apache HTTPd, IIS
+      and others.</li>
+<li><a href="servletapi/index.html"><strong>Servlet API Javadocs</strong></a> -
+    The Servlet 2.4 API Javadocs.</li>
+<li><a href="jspapi/index.html"><strong>JSP API Javadocs</strong></a> -
+    The JSP 2.0 API Javadocs.</li>
+</ul>
+
+</section>
+
+
+<section name="Apache Tomcat Developers">
+
+<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 5 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="status.html"><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="catalina/funcspecs/index.html"><strong>Functional Specifications</strong></a>
+    - Requirements specifications for features of the <em>Catalina</em> servlet
+    container portion of Apache Tomcat 5.</li>
+<li><a href="catalina/docs/api/index.html"><strong>Catalina Javadocs</strong></a>
+    - Javadoc API documentation for the <em>Catalina</em> servlet
+    container and its dependencies.</li>
+<li><a href="jasper/docs/api/index.html"><strong>Jasper Javadocs</strong></a>
+    - Javadoc API documentation for the <em>Jasper</em> JSP container
+    portion of Apache Tomcat 5.</li>
+<li><a href="architecture/index.html"><strong>Apache Tomcat Architecture</strong></a>
+    - Documentation of the Apache Tomcat Server Architecture.</li>
+    
+</ul>
+
+</section>
+
+
+</body>
+</document>
diff --git a/webapps/docs/introduction.xml b/webapps/docs/introduction.xml
new file mode 100644 (file)
index 0000000..c9ab051
--- /dev/null
@@ -0,0 +1,130 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="introduction.html">
+
+    &project;
+
+    <properties>
+        <author email="rslifka@sfu.ca">Robert Slifka</author>
+        <title>Introduction</title>
+    </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+<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>
+
+</section>
+
+
+<section name="Terminology">
+
+<p>In the course of reading these documents, you'll run across a number of
+terms; some specific to Tomcat, and others defined by the
+<a href="http://java.sun.com/products/servlet/">Servlet</a> or
+<a href="http://java.sun.com/products/jsp/">JSP</a> specifications.</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>
+
+</section>
+
+
+<section name="Directories and Files">
+
+<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.</p>
+
+<p>These are some of the key tomcat directories, all relative
+to <strong>$CATALINA_HOME</strong>:</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>
+
+</section>
+
+
+<section name="Configuring Tomcat">
+
+<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>
+
+</section>
+
+
+<section name="Where to Go for Help">
+
+<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 5 is a new release of Tomcat, keep in mind that some of the
+issues and solutions vary between the major versions of Tomcat (4.x versus
+5).  As you search around the web, there will be some documentation that
+is not relevant to Tomcat 5, but 3.x and 4.x.  Doing 3.x or 4.x things to 5
+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://jakarta.apache.org/tomcat/faq/">Tomcat FAQ</a> as maintained by the developers.</li>
+<li><a href="http://wiki.apache.org/jakarta-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://jakarta.apache.org/site/mail.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://jakarta.apache.org/site/mail.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, or send one of the doc authors email.</p>
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/jasper-howto.xml b/webapps/docs/jasper-howto.xml
new file mode 100644 (file)
index 0000000..dedd380
--- /dev/null
@@ -0,0 +1,345 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="jasper-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="glenn@apache.org">Glenn L. Nielsen</author>
+        <author email="pero@apache.org">Peter Rossbach</author>
+        <title>Jasper 2 JSP Engine How To</title>
+    </properties>
+
+<body>
+
+<section name="Table of Contents">
+<p>
+<a href="#Introduction">Introduction</a><br />
+<a href="#Configuration">Configuration</a><br />
+<a href="#Production Configuration">Production Configuration</a><br />
+<a href="#Web Application Compilation">Web Application Compilation</a><br />
+<a href="#Using Jikes">Using Jikes</a><br />
+</p>
+</section>
+
+<section name="Introduction">
+
+<p>Tomcat 5.5 uses the Jasper 2 JSP Engine to implement
+the <a href="http://java.sun.com/products/jsp/">JavaServer Pages 2.0</a>
+specification.</p>
+
+<p>Jasper 2 has been redesigned to significantly improve performance over
+the orignal 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 availablity
+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>
+
+</section>
+
+<section name="Configuration">
+
+<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 reloading is
+true, background compiles are enabled. checkInterval is the time in seconds
+between checks to see if a JSP page needs to be recompiled. Default
+<code>300</code> seconds.</li>
+
+<li><strong>compiler</strong> - Which compiler Ant should use to compile JSP
+pages.  See the Ant documentation for more information. If the value is not set,
+then the default Eclipse JDT Java compiler will be used instead of using Ant. 
+No default value.</li>
+
+<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> - What class path should I use while compiling
+generated servlets?  By default the classpath is created dynamically based on
+the current web application.</li>
+
+<li><strong>compilerSourceVM</strong> - What JDK version are the source files compatible with? (Default JDK 1.4)</li>
+
+<li><strong>compilerTargetVM</strong> - What JDK version are the generated files compatible with? (Default JDK 1.4)</li>
+
+<li><strong>development</strong> - Is Jasper used in development mode (will
+check for JSP modification on every access)? <code>true</code> or
+<code>false</code>, default <code>true</code>.</li>
+
+<li><strong>enablePooling</strong> - Determines whether tag handler pooling is
+enabled. <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>ieClassId</strong> - The class-id value to be sent to Internet
+Explorer when using &lt;jsp:plugin&gt; tags.   Default
+<code>clsid:8AD9C840-044E-11D1-B3E9-00805F499D93</code>.</li>
+
+<li><strong>fork</strong> - Have Ant fork JSP page compiles so they are
+performed in a seperate JVM from Tomcat? <code>true</code> or
+<code>false</code>, default <code>true</code>.</li>
+
+<li><strong>javaEncoding</strong> - Java file encoding to use for generating
+java source files. Default <code>UTF8</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>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>modificationTestInterval</strong> - Checks for modification for a given
+JSP file (and all its dependent files) will be performed only once every specified amount
+of seconds. Setting this to 0 will cause the JSP to be checked on every access.
+Default is <code>4</code> seconds.</li>
+
+<li><strong>reloading</strong> - Should Jasper check for modified JSPs?
+<code>true</code> or <code>false</code>, default <code>false</code>.</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>trimSpaces</strong> - Should white spaces in template text between
+actions or directives be trimmed ?, 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. This new compiler will be updated to support the Java 5 syntax as soon as
+possible.</p>
+
+<p>Apache Ant, which was used in previous Tomcat releases, can be used instead instead of 
+the new compiler by simply removing the <code>common/lib/jasper-compiler-jdt.jar</code> file, 
+and placing the <code>ant.jar</code> file from the latest Ant distribution in the 
+<code>common/lib</code> folder.  If you do this, you also need to use the "javac"
+argument to catalina.sh.</p>
+
+</section>
+
+<section name="Production Configuration">
+
+<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>
+
+</section>
+
+<section name="Web Application Compilation">
+
+<p>Using Ant is the preferred way to compile web applications using JSPC. 
+Use the script given below (a similar script is included in the "deployer" 
+download) to precompile a webapp:
+</p>
+
+<p>
+<source>
+&lt;project name="Webapp Precompilation" default="all" basedir="."&gt; 
+
+  &lt;target name="jspc"&gt; 
+
+    &lt;taskdef classname="org.apache.jasper.JspC" name="jasper2" &gt; 
+      &lt;classpath id="jspc.classpath"&gt; 
+        &lt;pathelement location="${java.home}/../lib/tools.jar"/&gt; 
+        &lt;fileset dir="${tomcat.home}/bin"&gt; 
+          &lt;include name="*.jar"/&gt; 
+        &lt;/fileset&gt; 
+        &lt;fileset dir="${tomcat.home}/server/lib"&gt; 
+          &lt;include name="*.jar"/&gt; 
+        &lt;/fileset&gt; 
+        &lt;fileset dir="${tomcat.home}/common/lib"&gt; 
+          &lt;include name="*.jar"/&gt; 
+        &lt;/fileset&gt; 
+      &lt;/classpath&gt; 
+    &lt;/taskdef&gt; 
+
+    &lt;jasper2 
+             validateXml="false" 
+             uriroot="${webapp.path}" 
+             webXmlFragment="${webapp.path}/WEB-INF/generated_web.xml" 
+             outputDir="${webapp.path}/WEB-INF/src" /&gt; 
+
+  &lt;/target&gt; 
+
+  &lt;target name="compile"&gt;
+
+    &lt;mkdir dir="${webapp.path}/WEB-INF/classes"/&gt;
+    &lt;mkdir dir="${webapp.path}/WEB-INF/lib"/&gt;
+
+    &lt;javac destdir="${webapp.path}/WEB-INF/classes"
+           optimize="off"
+           debug="on" failonerror="false"
+           srcdir="${webapp.path}/WEB-INF/src" 
+          excludes="**/*.smap"&gt;
+      &lt;classpath&gt;
+        &lt;pathelement location="${webapp.path}/WEB-INF/classes"/&gt;
+        &lt;fileset dir="${webapp.path}/WEB-INF/lib"&gt;
+          &lt;include name="*.jar"/&gt;
+        &lt;/fileset&gt;
+        &lt;pathelement location="${tomcat.home}/common/classes"/&gt;
+        &lt;fileset dir="${tomcat.home}/common/lib"&gt;
+          &lt;include name="*.jar"/&gt;
+        &lt;/fileset&gt;
+        &lt;pathelement location="${tomcat.home}/shared/classes"/&gt;
+        &lt;fileset dir="${tomcat.home}/shared/lib"&gt;
+          &lt;include name="*.jar"/&gt;
+        &lt;/fileset&gt;
+        &lt;fileset dir="${tomcat.home}/bin"&gt; 
+          &lt;include name="*.jar"/&gt; 
+        &lt;/fileset&gt; 
+      &lt;/classpath&gt;
+      &lt;include name="**" /&gt;
+      &lt;exclude name="tags/**" /&gt;
+    &lt;/javac&gt;
+
+  &lt;/target&gt;
+
+  &lt;target name="all" depends="jspc,compile"&gt;
+  &lt;/target&gt;
+
+  &lt;target name="cleanup"&gt;
+       &lt;delete&gt;
+        &lt;fileset dir="${webapp.path}/WEB-INF/src"/&gt;
+        &lt;fileset dir="${webapp.path}/WEB-INF/classes/org/apache/jsp"/&gt;
+       &lt;/delete&gt;
+  &lt;/target&gt;
+
+&lt;/project&gt;
+</source>
+</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/>
+<source>
+$ANT_HOME/bin/ant -Dtomcat.home=&lt;$TOMCAT_HOME&gt; -Dwebapp.path=&lt;$WEBAPP_PATH&gt;
+</source>
+</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 jasper2 task you can use the option <code>addWebXmlMappings</code> for 
+automatic merge the <code>${webapp.path}/WEB-INF/generated_web.xml</code>
+with the current web application deployment descriptor at <code>${webapp.path}/WEB-INF/web.xml</code>.
+When you want to use Java 5 feature inside your jsp's, add the following javac compiler task
+attributes: <code>source=&quot;1.5&quot; target=&quot;1.5&quot;</code>. For live application
+you can also compile with <code>optimize=&quot;on&quot;</code> and without debug info
+<code>debug=&quot;off&quot;</code>.
+</p>
+
+<p>
+When you don't want to stop the jsp generation at first jsp syntax error, use   
+<code>failOnError=&quot;false&quot;</code>and with <code>showSuccess=&quot;true&quot;</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 this version again!</li>
+<li>Use java system property at server runtime to disable tag 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 depending on the application.</li>
+</ul>
+</p>
+</section>
+
+<section name="Using Jikes">
+
+<p>If you wish to use
+<a href="http://oss.software.ibm.com/developerworks/opensource/jikes/">
+Jikes</a> to compile JSP pages:
+<ul>
+<li>From your <a href="ant.apache.org">Ant</a> installation, copy ant.jar
+and (if it's available: Ant 1.5 and later) ant-launcher.jar to 
+<code>$CATALINA_BASE/common/lib</code>.</li>
+<li>Download and install jikes. jikes must support the -encoding option.
+Execute <code>jikes -help</code> to verify that it was built with support
+for <code>-encoding</code>.</li>
+<li>Set the init parameter <code>compiler</code> to <code>jikes</code>.</li>
+<li>Define the property <code>-Dbuild.compiler.emacs=true</code> when starting
+Tomcat by adding it to your <code>CATALINA_OPTS</code> environment variable.
+This changes how jikes outputs error messages so that it is compatible with
+Jasper.</li>
+<li>If you get an error reporting that jikes can't use UTF8 encoding, try
+setting the init parameter <code>javaEncoding</code> to
+<code>ISO-8859-1</code>.</li>
+</ul>
+</p>
+
+</section>
+</body>
+
+</document>
diff --git a/webapps/docs/jndi-datasource-examples-howto.xml b/webapps/docs/jndi-datasource-examples-howto.xml
new file mode 100644 (file)
index 0000000..417b58a
--- /dev/null
@@ -0,0 +1,655 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="jndi-datasource-examples-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="leslie.hughes@rubus.com">Les Hughes</author>
+        <author email="david-tomcat@haraburda.com">David Haraburda</author>
+        <author>Glenn Nielsen</author>
+        <author email="yoavs@apache.org">Yoav Shapira</author>
+        <title>JNDI Datasource HOW-TO</title>
+    </properties>
+
+<body>
+
+<section name="Table of Contents">
+<p>
+<a href="#Introduction">Introduction</a><br />
+<a href="#Database Connection Pool (DBCP) Configurations">
+Database Connection Pool (DBCP) Configurations</a><br />
+<a href="#Non DBCP Solutions">Non DBCP Solutions</a><br />
+<a href="#Oracle 8i with OCI client">Oracle 8i with OCI client</a><br />
+<a href="#Common Problems">Common Problems</a><br />
+</p>
+</section>
+
+<section name="Introduction">
+
+<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 useage.</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 has changed somewhat between
+Tomcat 5.0.x and Tomcat 5.5.x.</b>  You will most likely need to modify your JNDI
+resource configurations to match the syntax in the example below in order
+to make them work in Tomcat 5.5.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>
+</section>
+
+<section name="Database Connection Pool (DBCP) Configurations">
+
+<p>DBCP provides support for JDBC 2.0.  On systems using a 1.4 JVM DBCP
+will support JDBC 3.0. Please let us know if you have used DBCP and its
+JDBC 3.0 features with a 1.4 JVM.
+</p>
+
+<p>See the <a href="http://jakarta.apache.org/commons/dbcp/configuration.html">
+DBCP documentation</a> for a complete list of configuration parameters.
+</p>
+
+<subsection name="Installation">
+<p>DBCP uses the Jakarta-Commons Database Connection Pool. It relies on
+number of Jakarta-Commons components:
+<ul>
+<li>Jakarta-Commons DBCP</li>
+<li>Jakarta-Commons Collections</li>
+<li>Jakarta-Commons Pool</li>
+</ul>
+These libraries are located in a single JAR at 
+<code>$CATALINA_HOME/common/lib/naming-factory-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>
+
+</subsection>
+
+<subsection name="Preventing dB connection pool leaks">
+
+<p>
+A database connection pool creates and manages a pool of connections
+to a database. Recycling and reusing already existing connections
+to a dB is more efficient than opening a new connection.
+</p>
+
+<p>
+There is one problem with connection pooling.  A web application has
+to explicetely 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 db connection pool "leak".
+This can eventually result in your web application db connections failing
+if there are no more available connections.</p>
+
+<p>
+There is a solution to this problem.  The Jakarta-Commons DBCP can be
+configured to track and recover these abandoned dB 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 dB connections are
+removed and recycled add the following attribute to the
+<code>Resource</code> configuration for your DBCP DataSource:
+<source>
+            removeAbandoned="true"
+</source>
+When available db connections run low DBCP will recover and recyle
+any abandoned dB connections it finds. The default is <code>false</code>.
+</p>
+
+<p>
+Use the <code>removeAbandonedTimeout</code> attribute to set the number
+of seconds a dB connection has been idle before it is considered abandoned.
+<source>
+            removeAbandonedTimeout="60"
+</source>
+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
+dB connection resources.
+<source>
+            logAbandoned="true"
+</source>
+The default is <code>false</code>.
+</p>
+
+</subsection>
+
+<subsection name="MySQL DBCP Example">
+
+<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:
+<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>
+
+<p>Before you proceed, don't forget to copy the JDBC Driver's jar into <code>$CATALINA_HOME/common/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.
+<source>
+mysql&gt; GRANT ALL PRIVILEGES ON *.* TO javauser@localhost 
+    -&gt;   IDENTIFIED BY 'javadude' WITH GRANT OPTION;
+mysql&gt; create database javatest;
+mysql&gt; use javatest;
+mysql&gt; create table testdata (
+    -&gt;   id int not null auto_increment primary key,
+    -&gt;   foo varchar(25), 
+    -&gt;   bar int);
+</source>
+<blockquote>
+<strong>Note:</strong> the above user should be removed once testing is
+complete!
+</blockquote>
+</p>
+
+<p>Next insert some test data into the testdata table.
+<source>
+mysql&gt; 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&gt;
+</source>
+</p>
+
+<h3>2. server.xml configuration</h3>
+<p>Configure the JNDI DataSource in Tomcat by adding a declaration for your
+resource to <code>$CATALINA_HOME/conf/server.xml</code>.</p>
+<p>Add this in between the <code>&lt;/Context&gt;</code> tag of the examples
+context and the <code>&lt;/Host&gt;</code> tag closing the localhost definition.
+If there is no such tag, you can add one as illustrated in the 
+<a href="config/context.html">Context</a> and
+<a href="config/host.html">Host</a> configuration references, and repeated below
+for your convenience.
+
+<source>
+&lt;Context path="/DBTest" docBase="DBTest"
+        debug="5" reloadable="true" crossContext="true"&gt;
+
+    &lt;!-- maxActive: Maximum number of dB connections in pool. Make sure you
+         configure your mysqld max_connections large enough to handle
+         all of your db connections. Set to 0 for no limit.
+         --&gt;
+
+    &lt;!-- maxIdle: Maximum number of idle dB connections to retain in pool.
+         Set to -1 for no limit.  See also the DBCP documentation on this
+         and the minEvictableIdleTimeMillis configuration parameter.
+         --&gt;
+
+    &lt;!-- maxWait: Maximum time to wait for a dB 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.
+         --&gt;
+
+    &lt;!-- username and password: MySQL dB username and password for dB connections  --&gt;
+
+    &lt;!-- 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.
+         --&gt;
+    
+    &lt;!-- url: The JDBC connection url for connecting to your MySQL dB.
+         The autoReconnect=true argument to the url makes sure that the
+         mm.mysql JDBC Driver will automatically reconnect if mysqld closed the
+         connection.  mysqld by default closes idle connections after 8 hours.
+         --&gt;
+
+  &lt;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?autoReconnect=true"/&gt;
+
+&lt;/Context&gt;
+</source>
+</p>
+
+<h3>3. web.xml configuration</h3>
+
+<p>Now create a <code>WEB-INF/web.xml</code> for this test application.
+<source>
+&lt;web-app xmlns="http://java.sun.com/xml/ns/j2ee"
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+    xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee
+http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd"
+    version="2.4"&gt;
+  &lt;description&gt;MySQL Test App&lt;/description&gt;
+  &lt;resource-ref&gt;
+      &lt;description&gt;DB Connection&lt;/description&gt;
+      &lt;res-ref-name&gt;jdbc/TestDB&lt;/res-ref-name&gt;
+      &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
+      &lt;res-auth&gt;Container&lt;/res-auth&gt;
+  &lt;/resource-ref&gt;
+&lt;/web-app&gt;
+</source>
+</p>
+
+<h3>4. Test code</h3>
+<p>Now create a simple <code>test.jsp</code> page for use later.
+<source>
+&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/sql" prefix="sql" %&gt;
+&lt;%@ taglib uri="http://java.sun.com/jsp/jstl/core" prefix="c" %&gt;
+
+&lt;sql:query var="rs" dataSource="jdbc/TestDB"&gt;
+select id, foo, bar from testdata
+&lt;/sql:query&gt;
+
+&lt;html&gt;
+  &lt;head&gt;
+    &lt;title&gt;DB Test&lt;/title&gt;
+  &lt;/head&gt;
+  &lt;body&gt;
+
+  &lt;h2&gt;Results&lt;/h2&gt;
+  
+&lt;c:forEach var="row" items="${rs.rows}"&gt;
+    Foo ${row.foo}&lt;br/&gt;
+    Bar ${row.bar}&lt;br/&gt;
+&lt;/c:forEach&gt;
+
+  &lt;/body&gt;
+&lt;/html&gt;
+</source>
+</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 Sun's <a href="http://java.sun.com/webservices/downloads/webservicespack.html">Java Web Services Developer Pack</a> or <a href="http://jakarta.apache.org/taglibs/doc/standard-doc/intro.html">Jakarta Taglib Standard 1.1</a> project - just make sure you get a 1.1.x release. Once you have JSTL, copy <code>jstl.jar</code> and <code>standard.jar</code> to your web app's <code>WEB-INF/lib</code> directory.
+
+</p>
+
+<p>Finally deploy your web app into <code>$CATALINA_HOME/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>
+
+</subsection>
+
+<subsection name="Oracle 8i, 9i &amp; 10g">
+<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/common/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>Some early versions of Tomcat 4.0 when used with JDK 1.4 will not load
+classes12.zip unless you unzip the file, remove the <code>javax.sql.*</code>
+class heirarchy and rejar.</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.    server.xml configuration</h3>
+<p>In a similar manner to the mysql config above, you will need to define your
+Datasource in your server.xml file. 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.
+<source>
+&lt;Resource name="jdbc/myoracle" auth="Container"
+              type="javax.sql.DataSource" driverClassName="oracle.jdbc.OracleDriver"
+              url="jdbc:oracle:thin:@127.0.0.1:1521:mysid"
+              username="scott" password="tiger" maxActive="20" maxIdle="10"
+              maxWait="-1"/&gt; 
+</source>
+</p>
+
+<h3>2.    web.xml configuration</h3>
+<p>You should ensure that you respect the elemeent ordering defined by the DTD when you
+create you applications web.xml file.</p>
+<source>
+&lt;resource-ref&gt;
+ &lt;description&gt;Oracle Datasource example&lt;/description&gt;
+ &lt;res-ref-name&gt;jdbc/myoracle&lt;/res-ref-name&gt;
+ &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
+ &lt;res-auth&gt;Container&lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+<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>
+<source>
+Context initContext = new InitialContext();
+Context envContext  = (Context)initContext.lookup("java:/comp/env");
+DataSource ds = (DataSource)envContext.lookup("jdbc/myoracle");
+Connection conn = ds.getConnection();
+//etc.
+</source>
+</subsection>
+
+
+<subsection name="PostgreSQL">
+<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/common/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>
+
+<source>
+&lt;Resource name="jdbc/postgres" auth="Container"
+          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
+          url="jdbc:postgresql://127.0.0.1:5432/mydb"
+          username="myuser" password="mypasswd" maxActive="20" maxIdle="10" maxWait="-1"/&gt;
+</source>
+<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 file for your application defining the
+datasource. This file must have the same name as your application, so if
+your application deploys as <code>someApp.war</code>, this filename must
+be <code>someApp.xml</code>. This file should look something like the following.
+</p>
+
+<source>
+&lt;Context path="/someApp" docBase="someApp"
+   crossContext="true" reloadable="true" debug="1"&gt;
+
+&lt;Resource name="jdbc/postgres" auth="Container"
+          type="javax.sql.DataSource" driverClassName="org.postgresql.Driver"
+          url="jdbc:postgresql://127.0.0.1:5432/mydb"
+          username="myuser" password="mypasswd" maxActive="20" maxIdle="10"
+maxWait="-1"/&gt;
+&lt;/Context&gt;
+</source>
+
+<h3>3. web.xml configuration</h3>
+<source>
+&lt;resource-ref&gt;
+ &lt;description&gt;postgreSQL Datasource example&lt;/description&gt;
+ &lt;res-ref-name&gt;jdbc/postgres&lt;/res-ref-name&gt;
+ &lt;res-type&gt;javax.sql.DataSource&lt;/res-type&gt;
+ &lt;res-auth&gt;Container&lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+
+<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>
+
+<source>
+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!");
+}
+</source>
+
+</subsection>
+</section>
+
+<section name="Non-DBCP Solutions">
+<p>
+These solutions either utilise a single connection to the database (not recommended for anything other
+than testing!) or some other pooling technology.
+</p>
+</section>
+
+<section name="Oracle 8i with OCI client">
+<subsection name="Introduction">
+<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/common/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>
+</subsection>
+
+<subsection name="Putting it all together">
+<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>
+<source>
+DriverManager.registerDriver(new
+oracle.jdbc.driver.OracleDriver());
+conn =
+DriverManager.getConnection("jdbc:oracle:oci8:@database","username","password");
+</source>
+<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>
+</subsection>
+</section>
+
+<section name="Common Problems">
+<p>Here are some common problems encountered with a web application which
+uses a database and tips for how to solve them.</p>
+
+<subsection name="Intermittent dB Connection Failures">
+<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 dB connection is less than the amount
+of time garbage collection took you can get a db conneciton 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>
+
+</subsection>
+
+<subsection name="Random Connection Closed Exceptions">
+<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:
+<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>
+Here is an example of properly written code to use a db connection
+obtained from a connection pool:
+<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>
+</p>
+
+</subsection>
+
+<subsection name="Context versus GlobalNamingResources">
+<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>
+</subsection>
+
+<subsection name="JNDI Resource Naming and Realm Interaction">
+<p>
+  In order to get Realms to work, the realm must refer to the datasource as
+  defined in the &lt;GlobalNamingResources&gt; or &lt;Context&gt; section, not a datasource as renamed
+  using &lt;ResourceLink&gt;.
+</p>
+</subsection> 
+
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/jndi-resources-howto.xml b/webapps/docs/jndi-resources-howto.xml
new file mode 100644 (file)
index 0000000..8c6308f
--- /dev/null
@@ -0,0 +1,765 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="jndi-resources-howto.html">
+
+    &project;
+
+    <properties>
+      <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+      <author email="yoavs@apache.org">Yoav Shapira</author>
+      <title>JNDI Resources HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+<p>Tomcat 5 provides a JNDI <strong>InitialContext</strong> implementation
+instance for each web application running under it, in a manner that is 
+compatible with those provided by a 
+<a href="http://java.sun.com/j2ee">Java2 Enterprise Edition</a> application 
+server. 
+
+The J2EE standard provides a standard set of elements in 
+the <code>/WEB-INF/web.xml</code> file to reference resources; resources 
+referenced in these elements must be defined in an application-server-specific configuration. 
+</p>
+
+<p>For Tomcat 5, these entries in per-web-application 
+<code>InitialContext</code> are configured in the 
+<code><strong>&lt;Context&gt;</strong></code> elements that can be specified 
+in either <code>$CATALINA_HOME/conf/server.xml</code> or, preferably, 
+the per-web-application context XML file (either <code>META-INF/context.xml</code>).
+</p>
+
+<p>Tomcat 5 maintains a separate namespace of global resources for the 
+entire server.  These are configured in the 
+<a href="config/globalresources.html">
+<code><strong>&lt;GlobalNameingResources&gt;</strong></code></a> element of 
+<code>$CATALINA_HOME/conf/server.xml</code>. You may expose these resources to 
+web applications by using 
+<code><strong>&lt;ResourceLink&gt;</strong></code> elements.
+</p>
+
+<p>The resources defined in these elements
+may be referenced by the following elements in the web application deployment
+descriptor (<code>/WEB-INF/web.xml</code>) of your web application:</p>
+<ul>
+<li><code><strong>&lt;env-entry&gt;</strong></code> - Environment entry, a
+    single-value parameter that can be used to configure how the application
+    will operate.</li>
+<li><code><strong>&lt;resource-ref&gt;</strong></code> - Resource reference,
+    which is typically to an object factory for resources such as a JDBC
+    <code>DataSource</code>, a JavaMail <code>Session</code>, or custom
+    object factories configured into Tomcat 5.</li>
+<li><code><strong>&lt;resource-env-ref&gt;</strong></code> - Resource
+    environment reference, a new variation of <code>resource-ref</code>
+    added in Servlet 2.4 that is simpler to configure for resources
+    that do not require authentication information.</li>
+</ul>
+
+<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>
+
+<source>
+// 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();
+</source>
+
+<p>See the following Specifications for more information about programming APIs
+for JNDI, and for the features supported by Java2 Enterprise Edition (J2EE)
+servers, which Tomcat emulates for the services that it provides:</p>
+<ul>
+<li><a href="http://java.sun.com/products/jndi/#download">Java Naming and
+    Directory Interface</a> (included in JDK 1.4, available separately for
+    prior JDK versions)</li>
+<li><a href="http://java.sun.com/j2ee/download.html">J2EE Platform
+    Specification</a> (in particular, see Chapter 5 on <em>Naming</em>)</li>
+</ul>
+
+</section>
+
+
+<section name="Configuring JNDI Resources">
+
+<p>Each available JNDI Resource is configured based on inclusion of the
+following elements in the <code><strong>&lt;Context&gt;</strong></code> or 
+<code><strong>&lt;DefaultContext&gt;</strong></code> elements:</p>
+
+<ul>
+<li><a href="config/context.html#Environment Entries">&lt;Environment&gt;</a> -
+    Configure names and values for scalar environment entries that will be
+    exposed to the web application through the JNDI
+    <code>InitialContext</code> (equivalent to the inclusion of an
+    <code>&lt;env-entry&gt;</code> element in the web application
+    deployment descriptor).</li>
+<li><a href="config/context.html#Resource Definitions">&lt;Resource&gt;</a> -
+    Configure the name and data type of a resource made available to the
+    application (equivalent to the inclusion of a
+    <code>&lt;resource-ref&gt;</code> element in the web application
+    deployment descriptor).</li>
+<li><a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> -
+    Add a link to a resource defined in the global JNDI context. Use resource 
+    links to give a web application access to a resource defined in 
+    the<a href="config/globalresources.html">&lt;GlobalNamingResources&gt;</a>
+    child element of the <a href="config/server.html">&lt;Server&gt;</a>
+    element.</li>
+<li><a href="config/context.html#Transaction">&lt;Transaction&gt;</a> -
+    Add a resource factory for instantiating the UserTransaction object 
+    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">&lt;Context&gt;</a> element (to be associated
+only with that particular web application).</p>
+
+<p>In addition, the names and values of all <code>&lt;env-entry&gt;</code>
+elements included in the web application deployment descriptor
+(<code>/WEB-INF/web.xml</code>) are configured into the initial context as
+well, overriding corresponding values from <code>conf/server.xml</code>
+<strong>only</strong> if allowed by the corresponding
+<code>&lt;Environment&gt;</code> element (by setting the
+<code>override</code> attribute to "true").</p>
+
+<p>Global resources can be defined in the server-wide JNDI context, by adding
+the resource elements described above to the
+<a href="config/globalresources.html">&lt;GlobalNamingResources&gt;</a>
+child element of the <a href="config/server.html">&lt;Server&gt;</a>
+element and using a 
+<a href="config/context.html#Resource Links">&lt;ResourceLink&gt;</a> to
+include it in the per-web-application context.</p>
+
+</section>
+
+
+<section name="Tomcat Standard Resource Factories">
+
+  <p>Tomcat 5 includes a series of standard resource factories that can
+  provide services to your web applications, but give you configuration
+  flexibility (in <code>$CATALINA_HOME/conf/server.xml</code>) 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 5.</p>
+
+  <p><em>NOTE</em> - Of the standard resource factories, only the
+  "JDBC Data Source" and "User Transaction" factories are mandated to
+  be available on other platforms, and then they are required only if
+  the platform implements the Java2 Enterprise Edition (J2EE) specs.
+  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>
+
+  <subsection name="Generic JavaBean Resources">
+
+    <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>
+
+<source>
+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;
+  }
+
+
+}
+</source>
+
+  <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>&lt;resource-env-ref&gt;</code> element, like this:</p>
+
+<source>
+&lt;resource-env-ref&gt;
+  &lt;description&gt;
+    Object factory for MyBean instances.
+  &lt;/description&gt;
+  &lt;resource-env-ref-name&gt;
+    bean/MyBeanFactory
+  &lt;/resource-env-ref-name&gt;
+  &lt;resource-env-ref-type&gt;
+    com.mycompany.MyBean
+  &lt;/resource-env-ref-type&gt;
+&lt;/resource-env-ref&gt;
+</source>
+
+    <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://java.sun.com/products/servlet/download.html">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>
+
+<source>
+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());
+</source>
+
+    <h3>4.  Configure Tomcat's Resource Factory</h3>
+
+    <p>To configure Tomcat's resource factory, add an elements like this to the
+    <code>$CATALINA_HOME/conf/server.xml</code> file, nested inside the
+    <code>Context</code> element for this web application.</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Resource name="bean/MyBeanFactory" auth="Container"
+            type="com.mycompany.MyBean"
+            factory="org.apache.naming.factory.BeanFactory"
+            bar="23"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="JavaMail Sessions">
+
+    <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 5 includes a standard resource factory that will create
+    <code>javax.mail.Session</code> session instances for you, already
+    connected to the SMTP server that is configured in <code>server.xml</code>.
+    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>
+<source>
+&lt;resource-ref&gt;
+  &lt;description&gt;
+    Resource reference to a factory for javax.mail.Session
+    instances that may be used for sending electronic mail
+    messages, preconfigured to connect to the appropriate
+    SMTP server.
+  &lt;/description&gt;
+  &lt;res-ref-name&gt;
+    mail/Session
+  &lt;/res-ref-name&gt;
+  &lt;res-type&gt;
+    javax.mail.Session
+  &lt;/res-type&gt;
+  &lt;res-auth&gt;
+    Container
+  &lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+
+    <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://java.sun.com/products/servlet/download.html">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>
+<source>
+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);
+</source>
+
+    <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
+    <code>$CATALINA_HOME/conf/server.xml</code>, 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
+    <code>$CATALINA_HOME/conf/server.xml</code> file, nested inside the
+    <code>Context</code> element for this web application.</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Resource name="mail/Session" auth="Container"
+            type="javax.mail.Session"
+            mail.smtp.host="localhost"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>
+
+    <h3>4.  Install the JavaMail libraries</h3>
+
+    <p><a href="http://java.sun.com/products/javamail/downloads/index.html" target="_blank">
+    Download the JavaMail API</a>.  The JavaMail API requires the Java Activation
+    Framework (JAF) API as well.  The Java Activation Framework can be downloaded
+    from <a href="http://java.sun.com/products/javabeans/glasgow/jaf.html">Sun's site</a>.
+    </p>
+
+    <p>This download includes 2 vital libraries for the configuration; 
+    activation.jar and mail.jar. Unpackage both distributions and place 
+    them into $CATALINA_HOME/common/lib so that they are available to
+    Tomcat during the initialization of the mail Session Resource.
+    <strong>Note:</strong> placing these jars in both common/lib and a 
+    web application's lib folder will cause an error, so ensure you have
+    them in the $CATALINA_HOME/common/lib location only.
+    </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
+    <code>$CATALINA_HOME/conf/server.xml</code> file, 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>
+
+  </subsection>
+
+  <subsection name="JDBC Data Sources">
+
+    <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 J2EE
+    Platform Specification requires J2EE Application Servers to make
+    available a <em>DataSource</em> implementation (that is, a connection
+    pool for JDBC connections) for this purpose.  Tomcat 5 offers exactly
+    the same support, so that database-based applications you develop on
+    Tomcat using this service will run unchanged on any J2EE server.</p>
+
+    <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 J2EE Platform Specification (covers the JDBC facilities that
+        all J2EE 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://jakarta.apache.org/commons">Jakarta Commons</a>
+    subproject.  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/common/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>
+<source>
+&lt;resource-ref&gt;
+  &lt;description&gt;
+    Resource reference to a factory for java.sql.Connection
+    instances that may be used for talking to a particular
+    database that is configured in the server.xml file.
+  &lt;/description&gt;
+  &lt;res-ref-name&gt;
+    jdbc/EmployeeDB
+  &lt;/res-ref-name&gt;
+  &lt;res-type&gt;
+    javax.sql.DataSource
+  &lt;/res-type&gt;
+  &lt;res-auth&gt;
+    Container
+  &lt;/res-auth&gt;
+&lt;/resource-ref&gt;
+</source>
+
+    <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://java.sun.com/products/servlet/download.html">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>
+<source>
+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();
+</source>
+
+    <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
+    <code>$CATALINA_HOME/conf/server.xml</code>, 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
+    <code>/META-INF/context.xml</code> file in the web application.</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;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"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>maxActive</strong> - The maximum number of active instances
+        that can be allocated from this pool at the same time.</li>
+    <li><strong>maxIdle</strong> - The maximum number of connections that
+        can sit idle in this pool at the same time.</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.</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>user</strong> - Database username to be passed to our
+        JDBC driver.</li>
+    <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>
+    </ul>
+    <p>For more details, please refer to the commons-dbcp documentation.</p>
+
+  </subsection>
+
+</section>
+
+
+<section name="Adding Custom Resource Factories">
+
+  <p>If none of the standard resource factories meet your needs, you can
+  write your own factory and integrate it into Tomcat 5, and then configure
+  the use of this factory in the <code>conf/server.xml</code> configuration
+  file.  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 <code>conf/server.xml</code>) 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>
+
+<source>
+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);
+
+  }
+
+}
+</source>
+
+  <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>&lt;ResourceParams&gt;</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/common/lib</code> and
+  <code>$CATALINA_HOME/server/lib</code> directories.  When you are through,
+  place the factory class (and the corresponding bean class) unpacked under
+  <code>$CATALINA_HOME/common/classes</code>, or in a JAR file inside
+  <code>$CATALINA_HOME/common/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>&lt;resource-env-ref&gt;</code> element, like this:</p>
+
+<source>
+&lt;resource-env-ref&gt;
+  &lt;description&gt;
+    Object factory for MyBean instances.
+  &lt;/description&gt;
+  &lt;resource-env-ref-name&gt;
+    bean/MyBeanFactory
+  &lt;/resource-env-ref-name&gt;
+  &lt;resource-env-ref-type&gt;
+    com.mycompany.MyBean
+  &lt;/resource-env-ref-type&gt;
+&lt;resource-env-ref&gt;
+</source>
+
+    <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://java.sun.com/products/servlet/download.html">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>
+
+<source>
+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());
+</source>
+
+    <h3>4.  Configure Tomcat's Resource Factory</h3>
+
+    <p>To configure Tomcat's resource factory, add an elements like this to the
+    <code>$CATALINA_HOME/conf/server.xml</code> file, nested inside the
+    <code>Context</code> element for this web application.</p>
+<source>
+&lt;Context ...&gt;
+  ...
+  &lt;Resource name="bean/MyBeanFactory" auth="Container"
+            type="com.mycompany.MyBean"
+            factory="com.mycompany.MyBeanFactory"
+            bar="23"/&gt;
+  ...
+&lt;/Context&gt;
+</source>
+
+    <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>
+
+</section>
+
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/logging.xml b/webapps/docs/logging.xml
new file mode 100644 (file)
index 0000000..4f551ad
--- /dev/null
@@ -0,0 +1,272 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="logging.html">
+
+    &project;
+
+  <properties>
+    <title>Logging in Tomcat</title>
+    <author>Allistair Crossley</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+  </properties>
+
+<body>
+
+  <section name="Introduction">
+  <p>
+    Tomcat 5.5 uses 
+    <a href="http://jakarta.apache.org/commons/logging">Commons Logging</a>
+    throughout its internal code allowing the 
+    developer to choose a logging configuration that suits their needs, e.g
+    java.util.logging or 
+    <a href="http://logging.apache.org/log4j">Log4J</a>. 
+    Commons Logging provides Tomcat the ability to log
+    hierarchially across various log levels without needing to rely on a particular
+    logging implementation.
+  </p>
+  <p>
+    An important consequence for Tomcat 5.5 is that the &lt;Logger&gt; element found in 
+    previous versions to create a <code>localhost_log</code> is no longer a valid nested element 
+    of &lt;Context&gt;. Instead, the default Tomcat configuration will use java.util.logging. 
+    If the developer wishes to collect detailed internal Tomcat logging (i.e what is happening 
+    within the Tomcat engine), then they should configure a logging system such as java.util.logging 
+    or log4j as detailed next.
+  </p>
+
+  </section>
+
+  <section name="log4j">
+    <p>
+      Tomcat 5.5 has done away with <code>localhost_log</code> which you may be familiar with
+      as the runtime exception/stack trace log. These types of error are usually thrown
+      by uncaught exceptions, but are still valuable to the developer. They can now be
+      found in the <code>stdout</code> log.
+    </p>
+
+    <p>
+      If you need to setup cross-context detailed logging from within Tomcat's code, 
+      then you can use a simple log4j configuration. Note that this logging van be very 
+      verbose depending on the log level you chose to use.  Note also that a log4j logging 
+      configuration is not going to produce stack trace type logging: those stack traces
+      are output to <code>stdout</code> as discussed above.
+    </p>
+
+    <p>
+      Follow the following steps to setup a file named tomcat.log that has internal 
+      Tomcat logging output to it:
+    </p>
+
+    <p>
+      <ol>
+        <li>Create a file called log4j.properties with the following content 
+            and save it into common/classes.
+          <source>
+            log4j.rootLogger=debug, R <br />
+            log4j.appender.R=org.apache.log4j.RollingFileAppender <br />
+            log4j.appender.R.File=${catalina.home}/logs/tomcat.log <br />
+            log4j.appender.R.MaxFileSize=10MB <br />
+            log4j.appender.R.MaxBackupIndex=10 <br />
+            log4j.appender.R.layout=org.apache.log4j.PatternLayout <br />
+            log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n <br />
+            log4j.logger.org.apache.catalina=DEBUG, R
+          </source>
+       </li>
+
+       <li><a href="http://logging.apache.org/log4j">Download Log4J</a> 
+            (v1.2 or later) and place the log4j jar in $CATALINA_HOME/common/lib.</li>
+
+        <li><a href="http://jakarta.apache.org/site/downloads/downloads_commons-logging.cgi">
+            Download Commons Logging</a> and place the commons-logging.jar 
+            (not commons-logging-api.jar) in $CATALINA_HOME/common/lib with 
+            the log4j jar.</li>
+
+       <li>Start Tomcat</li>
+      </ol>
+    </p>
+
+    <p>
+      This log4j configuration sets up a file called tomcat.log in your 
+      Tomcat logs folder with a maximum file size of 10MB and
+      up to 10 backups.  DEBUG level is specified which will result in the 
+      most verbose output from Tomcat.
+    </p>
+       
+    <p>
+      You can (and should) be more picky about which packages to include 
+      in the logging. Tomcat 5.5 uses defines loggers by Engine and Host names.
+      For example, for a default 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.
+      
+      <ul>
+        <li>log4j.logger.org.apache.catalina.core.ContainerBase.[Catalina].[localhost]=DEBUG, R</li>
+       <li>log4j.logger.org.apache.catalina.core=DEBUG, R</li>
+       <li>log4j.logger.org.apache.catalina.session=DEBUG, R</li>
+      </ul>
+
+      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 folder, and log4j1.2.8.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>
+       
+  </section>
+
+  <section name="java.util.logging">
+
+  <p>
+    In order to configure JDK logging you should have JDK 1.4+. Tomcat 5.5 is intended for
+    JDK 5.0, but can be run on JDK 1.4 using a compatibility package.
+  </p>
+  <p>
+    The default implemenatation 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 in Tomcat 5.5, 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>In the JDK's logging.properties file. Check
+      your JAVA_HOME environment setting to see which JDK Tomcat is using (or maybe JRE 5.0 as Tomcat
+      can now run on a JRE from version 5.5). The file will be in <code>$JAVA_HOME/jre/lib</code>.
+      Alternately, it can also use a global configuration file located elsewhere by using the 
+      system property <code>java.util.logging.config.file</code>, or programmatic configuration using
+      <code>java.util.logging.config.class</code>.</li>
+      <li>In each classloader using a logging.properties file. This means that it is possible to have a
+      configuration for the Tomcat core, as well as separate configurations for each webapps which will 
+      have the same lifecycle as the webapps.</li>
+    </ul>
+  </p>
+  <p>
+    The default logging.properties specifies a ConsoleHandler for routing logging to stdout and
+    also a FileHandler. A handler's log level threshold can be set using SEVERE, CONFIG, INFO, 
+    WARN, FINE, FINEST or ALL. The logging.properties shipped with JDK is set to INFO. You
+    can also target specific packages to collect logging from and specify a level. Here is how
+    you would set debugging from Tomcat. You would need to ensure the ConsoleHandler's level is also
+    set to collect this threshold, so FINEST or ALL should be set. Please refer to Sun's java.util.logging
+    documentation for the complete details.
+  </p>
+  <p>
+    <source>org.apache.catalina.level=FINEST</source>
+  </p>
+  <p>
+    The configuration used by JULI is extremely similar, but uses a few extensions to allow better 
+    flexibility in assigning loggers. The main differences are:
+    <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>As in Java 5.0, 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 a <code>.handlers</code> property.</li>
+      <li>System property replacement for property values which start with ${sytstemPropertyName}.</li>
+    </ul>
+  </p>
+  <p>
+    Example logging.properties file to be placed in common/classes:
+    <source>
+handlers = 1catalina.org.apache.juli.FileHandler, 2localhost.org.apache.juli.FileHandler, \
+           3manager.org.apache.juli.FileHandler, 4admin.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.
+
+4admin.org.apache.juli.FileHandler.level = FINE
+4admin.org.apache.juli.FileHandler.directory = ${catalina.base}/logs
+4admin.org.apache.juli.FileHandler.prefix = admin.
+
+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
+
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].level = INFO
+org.apache.catalina.core.ContainerBase.[Catalina].[localhost].[/admin].handlers = \
+   4admin.org.apache.juli.FileHandler
+
+# For example, set the com.xyz.foo logger to only log SEVERE
+# messages:
+#org.apache.catalina.startup.ContextConfig.level = FINE
+#org.apache.catalina.startup.HostConfig.level = FINE
+#org.apache.catalina.session.ManagerBase.level = FINE
+    </source>
+    </p>
+    
+    <p>
+      Example logging.properties for the servlet-examples web application to be placed
+      in WEB-INF/classes inside the web application:
+      <source>
+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
+      </source>
+    </p>
+
+  </section>
+
+</body>
+</document>
diff --git a/webapps/docs/manager-howto.xml b/webapps/docs/manager-howto.xml
new file mode 100644 (file)
index 0000000..eca541d
--- /dev/null
@@ -0,0 +1,1295 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="manager-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+        <title>Manager App HOW-TO</title>
+    </properties>
+
+<body>
+
+<section name="Table of Contents">
+
+<p>
+<a href="#Introduction">Introduction</a><br />
+<a href="#Configuring Manager Application Access">
+Configuring Manager Application Access</a><br />
+<a href="#Supported Manager Commands">Supported Manager Commands</a><br />
+<blockquote>
+<a href="#Deploy A New Application Remotely">Deploy A New Application Remotely</a><br />
+<a href="#Deploy A New Application from a Local Path">Deploy A New Application from a Local Path</a><br />
+<a href="#List Currently Deployed Applications">
+List Currently Deployed Applications</a><br />
+<a href="#Reload An Existing Application">Reload An Existing Application</a><br />
+<a href="#List OS and JVM Properties">List OS and JVM Properties</a><br />
+<a href="#List Available Global JNDI Resources">
+List Available Global JNDI Resources</a><br />
+<a href="#List Available Security Roles">List Available Security Roles</a><br />
+<a href="#Session Statistics">Session Statistics</a><br />
+<a href="#Start an Existing Application">Start an Existing Application</a><br />
+<a href="#Stop an Existing Application">Stop an Existing Application</a><br />
+<a href="#Undeploy an Existing Application">
+Undeploy an Existing Application</a><br />
+</blockquote>
+<a href="#Executing Manager Commands With Ant">
+Executing Manager Commands With Ant</a><br />
+<a href="#Using the JMX Proxy Servlet">
+Using the JMX Proxy Servlet</a><br />
+<blockquote>
+<a href="#What is JMX Proxy Servlet">What is JMX Proxy Servlet?</a><br />
+<a href="#JMX Query command">Query command</a><br />
+<a href="#JMX Set command">Set command</a><br />
+</blockquote>
+</p>
+
+</section>
+
+<section name="Introduction">
+
+<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 5 server
+configuration file.</p>
+
+<p>To support these capabilities, Tomcat 5 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, on a specified context path, 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>&lt;ResourceLink&gt;</code> elements
+    nested in a <code>&lt;Context&gt;</code> deployment description.</li>
+<li>List the available security roles defined in the user database.</li>
+<li>Start a stopped application (thus making it available again).</li>
+<li>Stop an existing application (so that it becomes unavailable), but
+    do not undeploy it.</li>
+<li>Undeploy a deployed web application and delete its document base
+    directory (unless it was deployed from file system).</li>
+</ul>
+
+<p>There are two ways to configure the Manager web application
+<code>Context</code>:
+<ul>
+<li>Install the <code>manager.xml</code> context configuration file
+    in the <code>$CATALINA_HOME/conf/[enginename]/[hostname]</code> folder.
+</li>
+<li>Configure the Manager <code>Context</code> within the
+    <code>Host</code> configuration in your Tomcat <code>server.xml</code>
+    configuration. Here is an example:
+<pre>
+&lt;Context path="/manager" debug="0" privileged="true"
+         docBase="/usr/local/kinetic/tomcat5/server/webapps/manager"&gt;
+&lt;/Context&gt;
+</pre>
+</li>
+</ul>
+</p>
+
+<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 <code>Manager</code> web application.
+<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>
+</p>
+
+<p>Future versions of Tomcat 5 will include administrative functionality that
+is presented in (at least) the following forms:
+<ul>
+<li>As web services, so that Tomcat administration can be easily integrated
+    into remote and/or non-Java mnagement environments.</li>
+<li>As a web application with a nice user interface (built on top of the
+    web services processing layer) for easy Tomcat administration via a
+    web browser.</li>
+</ul>
+</p>
+
+</section>
+
+<section name="Configuring Manager Application Access">
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></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 the role <strong>manager</strong> associated with them.
+Further, there is no username in the default users file
+(<conf>$CATALINA_HOME/conf/tomcat-users.xml</conf>) that is assigned this
+role.  Therefore, access to the Manager application is completely disabled
+by default.</p>
+
+<p>To enable access to the Manager web application, you must either create
+a new username/password combination and associate the role name
+<strong>manager</strong> with it, or add the <strong>manager</strong> role
+to some existing username/password combination.  Exactly where this is done
+depends on which <code>Realm</code> implementation you are using:</p>
+<ul>
+<li><em>MemoryRealm</em> - If you have not customized your
+    <code>$CATALINA_HOME/conf/server.xml</code> to select a different one,
+    Tomcat 5 defaults to an XML-format file stored at
+    <code>$CATALINA_HOME/conf/tomcat-users.xml</code>, which can be
+    edited with any text editor.  This file contains an XML
+    <code>&lt;user&gt;</code> for each individual user, which might
+    look something like this:
+<source>
+&lt;user name="craigmcc" password="secret" roles="standard,manager" /&gt;
+</source>
+    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</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</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</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</strong>.</p>
+
+<p>In addition to the password restrictions the manager web application
+could be restricted by the remote IP address or host by adding a
+<code>RemoteAddrValve</code> or <code>RemoteHostValve</code>.  Here is
+an example of restricting access to the localhost by IP address:
+<pre>
+&lt;Context path="/manager" debug="0" privileged="true"
+         docBase="/usr/local/kinetic/tomcat5/server/webapps/manager"&gt;
+         &lt;Valve className="org.apache.catalina.valves.RemoteAddrValve"
+                allow="127.0.0.1"/&gt;
+&lt;/Context&gt;
+</pre>
+</p>
+</section>
+
+
+<section name="Supported Manager Commands">
+
+<p>All commands that the Manager application knows how to process are
+specified in a single request URI like this:</p>
+<source>
+http://{host}:{port}/manager/{command}?{parameters}
+</source>
+<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>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
+        applciation 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 wil 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>
+
+<blockquote><em>
+<p><strong>WARNING:</strong>  the legacy commands <code>/install</code> and 
+<code>/remove</code> are deprecated.
+They are presently equivalent to <code>/deploy</code> and <code>/undeploy</code>,
+but could be removed in a future release.</p>
+</em></blockquote>
+
+<subsection name="Deploy A New Application Remotely">
+
+<source>
+http://localhost:8080/manager/deploy?path=/foo
+</source>
+
+<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 it on the context path
+specified by the <code>path</code> request parameter.  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 application can
+later be undeployed (and the corresponding application directory removed)
+by use of the <code>/undeploy</code>.</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:
+<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 version number. The application version can
+    be later redeployed when needed using only the tag.</li>
+</ul>
+</p>
+
+<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>
+<source>
+OK - Deployed application at context path /foo
+</source>
+
+<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 5 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 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 path was specified</em>
+    <blockquote>
+    The <code>path</code> parameter is required.
+    </blockquote></li>
+</ul>
+
+</subsection>
+
+<subsection name="Deploy A New Application from a Local Path">
+
+<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 version of a previously deployed webapp</h3>
+
+<p>This can be used to deploy a previous version of a 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.
+<source>
+http://localhost:8080/manager/deploy?path=/footoo&amp;tag=footag
+</source>
+</p>
+
+<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>.
+<source>
+http://localhost:8080/manager/deploy?path=/footoo&amp;war=file:/path/to/foo
+</source>
+</p>
+
+<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.
+<source>
+http://localhost:8080/manager/deploy?war=jar:file:/path/to/bar.war!/
+</source>
+</p>
+
+<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. If no <code>path</code> 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 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 there is no <code>path</code> parameter so the context path defaults
+to the name of the web application directory.
+<source>
+http://localhost:8080/manager/deploy?war=foo
+</source>
+</p>
+
+<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>.
+<source>
+http://localhost:8080/manager/deploy?path=/bartoo&amp;war=bar.war
+</source>
+</p>
+
+<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:
+<source>
+&lt;Context path="/foobar" docBase="/path/to/application/foobar"
+         debug="0"&gt;
+
+  &lt;!-- Link to the user database we will get roles from --&gt;
+  &lt;ResourceLink name="users" global="UserDatabase"
+                type="org.apache.catalina.UserDatabase"/&gt;
+
+&lt;/Context&gt;
+</source>
+</p>
+
+<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.
+<source>
+http://localhost:8080/manager/deploy?config=file:/path/context.xml
+</source>
+</p>
+
+<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.
+<source>
+http://localhost:8080/manager/deploy?config=file:/path/context.xml&amp;war=jar:file:/path/bar.war!/
+</source>
+</p>
+
+<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
+liveDeploy=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 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>
+<source>
+OK - Deployed application at context path /foo
+</source>
+
+<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 5 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 or
+    liveDeploy=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>
+
+</subsection>
+
+<subsection name="List Currently Deployed Applications">
+
+<source>
+http://localhost:8080/manager/list
+</source>
+
+<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>
+<source>
+OK - Listed applications for virtual host localhost
+/webdav:running:0
+/examples:running:0
+/manager:running:0
+/:running:0
+</source>
+
+</subsection>
+
+<subsection name="Reload An Existing Application">
+
+<source>
+http://localhost:8080/manager/reload?path=/examples
+</source>
+
+<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>
+<source>
+OK - Reloaded application at context path /examples
+</source>
+
+<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 5 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>
+
+</subsection>
+
+<subsection name="List OS and JVM Properties">
+
+<source>
+http://localhost:8080/manager/serverinfo
+</source>
+
+<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 5 logs for the details.</p>
+    </blockquote></li>
+</ul>
+
+</subsection>
+
+<subsection name="List Available Global JNDI Resources">
+
+<source>
+http://localhost:8080/manager/resources[?type=xxxxx]
+</source>
+
+<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 specfied
+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>&lt;ResourceLink&gt;</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 5 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>
+
+
+</subsection>
+
+
+<subsection name="List Available Security Roles">
+
+<source>
+http://localhost:8080/manager/roles
+</source>
+
+<p>List the security role names (and corresponding descriptions) that are
+available in the <code>org.apache.catalina.UserDatabase</code> resource that
+is linked to the <code>users</code> resource reference in the web.xml file
+for the Manager web application.  This would typically be used, for example,
+by a deployment tool that wanted to create
+<code>&lt;security-role-ref&gt;</code> elements to map security role names
+used in a web application to the role names actually defined within the
+container.</p>
+
+<p>By default, the <code>users</code> resource reference is pointed at the
+global <code>UserDatabase</code> resource.  If you choose to utilize a
+different user database per virtual host, you should modify the
+<code>&lt;ResourceLink&gt;</code> element in the default
+<code>manager.xml</code> context configuration file to point at the global
+user database resource for this virtual host.</p>
+
+<p>When this command is executed, the first line of the response will be:</p>
+<pre>
+  OK - Listed security roles
+</pre>
+<p>followed by one line for each security role.  Each line is composed of
+fields delimited by colon characters (":") as follows:</p>
+<ul>
+<li><em>Security Role Name</em> - A security role name that is known to Tomcat
+    in the user database.</li>
+<li><em>Description</em> - Description of this security role (useful in
+    creating user interfaces for selecting roles.</li>
+</ul>
+
+<p>If an error occurs, the response will start with <code>FAIL</code> and
+include an error message.  Possible causes for problems include:</p>
+<ul>
+<li><em>Cannot resolve user database reference</em> - A JNDI error prevented
+    the successful lookup of the <code>org.apache.catalina.UserDatabase</code>
+    resource.  Check the Tomcat log files for a stack trace associated with
+    this error.</li>
+<li><em>No user database is available</em> - You have not configured a resource
+    reference for the <code>users</code> resource that points at an
+    appropriate user database instance.  Check your <code>manager.xml</code>
+    file and ensure that you have created an appropriate
+    <code>&lt;ResourceLink&gt;</code> or
+    <code>&lt;ResourceParams&gt;</code> element for this resource.</li>
+</ul>
+
+</subsection>
+
+
+<subsection name="Session Statistics">
+
+<source>
+http://localhost:8080/manager/sessions?path=/examples
+</source>
+
+<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>
+<source>
+OK - Session information for application at context path /examples
+Default maximum session inactive interval 30 minutes
+30 - &lt;40 minutes:1 sessions
+</source>
+
+</subsection>
+
+
+<subsection name="Start an Existing Application">
+
+<source>
+http://localhost:8080/manager/start?path=/examples
+</source>
+
+<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>
+<source>
+OK - Started application at context path /examples
+</source>
+
+<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 5 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>
+
+</subsection>
+
+<subsection name="Stop an Existing Application">
+
+<source>
+http://localhost:8080/manager/stop?path=/examples
+</source>
+
+<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>
+<source>
+OK - Stopped application at context path /examples
+</source>
+
+<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 5 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>
+
+</subsection>
+
+
+<subsection name="Undeploy an Existing Application">
+
+<source>
+http://localhost:8080/manager/undeploy?path=/examples
+</source>
+
+<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_HOME/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>
+<source>
+OK - Undeployed application at context path /examples
+</source>
+
+<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 5 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>
+
+</subsection>
+
+</section>
+
+<section name="Executing Manager Commands With Ant">
+
+<p>In addition to the ability to execute Manager commands via HTTP requests,
+as documented above, Tomcat 5 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 5
+    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</code> role.</li>
+</ul>
+
+<p>To use custom tasks within Ant, you must declare them first with a
+<code>&lt;taskdef&gt;</code> element.  Therefore, your <code>build.xml</code>
+file might look something like this:</p>
+
+<table border="1">
+<tr><td><pre>
+&lt;project name="My Application" default="compile" basedir="."&gt;
+
+  &lt;!-- Configure the directory into which the web application is built --&gt;
+  &lt;property name="build"    value="${basedir}/build"/&gt;
+
+  &lt;!-- Configure the context path for this application --&gt;
+  &lt;property name="path"     value="/myapp"/&gt;
+
+  &lt;!-- Configure properties to access the Manager application --&gt;
+  &lt;property name="url"      value="http://localhost:8080/manager"/&gt;
+  &lt;property name="username" value="myusername"/&gt;
+  &lt;property name="password" value="mypassword"/&gt;
+
+  &lt;!-- Configure the custom Ant tasks for the Manager application --&gt;
+  &lt;taskdef name="deploy"    classname="org.apache.catalina.ant.DeployTask"/&gt;
+  &lt;taskdef name="list"      classname="org.apache.catalina.ant.ListTask"/&gt;
+  &lt;taskdef name="reload"    classname="org.apache.catalina.ant.ReloadTask"/&gt;
+  &lt;taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/&gt;
+  &lt;taskdef name="roles"     classname="org.apache.catalina.ant.RolesTask"/&gt;
+  &lt;taskdef name="start"     classname="org.apache.catalina.ant.StartTask"/&gt;
+  &lt;taskdef name="stop"      classname="org.apache.catalina.ant.StopTask"/&gt;
+  &lt;taskdef name="undeploy"  classname="org.apache.catalina.ant.UndeployTask"/&gt;
+
+  &lt;!-- Executable Targets --&gt;
+  &lt;target name="compile" description="Compile web application"&gt;
+    &lt;!-- ... construct web application in ${build} subdirectory, and
+            generated a ${path}.war ... --&gt;
+  &lt;/target&gt;
+
+  &lt;target name="deploy" description="Install web application"
+          depends="compile"&gt;
+    &lt;deploy url="${url}" username="${username}" password="${password}"
+            path="${path}" war="${build}${path}.war"/&gt;
+  &lt;/target&gt;
+
+  &lt;target name="reload" description="Reload web application"
+          depends="compile"&gt;
+    &lt;reload  url="${url}" username="${username}" password="${password}"
+            path="${path}"/&gt;
+  &lt;/target&gt;
+
+  &lt;target name="undeploy" description="Remove web application"&gt;
+    &lt;undeploy url="${url}" username="${username}" password="${password}"
+            path="${path}"/&gt;
+  &lt;/target&gt;
+
+&lt;/project&gt;
+</pre></td></tr>
+</table>
+
+<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>
+
+<subsection name="Tasks output capture">
+
+<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>&lt;redirector&gt;</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>&lt;redirector&gt;</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></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>&lt;redirector&gt;</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>&lt;redirector&gt;</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>
+       &lt;target name="manager.deploy"
+               depends="context.status"
+               if="context.notInstalled"&gt;
+               &lt;deploy url="${mgr.url}"
+                       username="${mgr.username}"
+                       password="${mgr.password}"
+                       path="${mgr.context.path}"
+                       config="${mgr.context.descriptor}"/&gt;
+       &lt;/target&gt;
+
+       &lt;target name="manager.deploy.war"
+               depends="context.status"
+               if="context.deployable"&gt;
+               &lt;deploy url="${mgr.url}"
+                       username="${mgr.username}"
+                       password="${mgr.password}"
+                       update="${mgr.update}"
+                       path="${mgr.context.path}"
+                       war="${mgr.war.file}"/&gt;
+       &lt;/target&gt;
+       
+       &lt;target name="context.status"&gt;
+               &lt;property name="running" value="${mgr.context.path}:running"/&gt;
+               &lt;property name="stopped" value="${mgr.context.path}:stopped"/&gt;
+       
+               &lt;list url="${mgr.url}"
+                       outputproperty="ctx.status"
+                       username="${mgr.username}"
+                       password="${mgr.password}"&gt;
+               &lt;/list&gt;
+               
+               &lt;condition property="context.running"&gt;
+                       &lt;contains string="${ctx.status}" substring="${running}"/&gt;
+               &lt;/condition&gt;
+               &lt;condition property="context.stopped"&gt;
+                       &lt;contains string="${ctx.status}" substring="${stopped}"/&gt;
+               &lt;/condition&gt;
+               &lt;condition property="context.notInstalled"&gt;
+                       &lt;and&gt;
+                               &lt;isfalse value="${context.running}"/&gt;
+                               &lt;isfalse value="${context.stopped}"/&gt;
+                       &lt;/and&gt;
+               &lt;/condition&gt;
+               &lt;condition property="context.deployable"&gt;
+                       &lt;or&gt;
+                               &lt;istrue value="${context.notInstalled}"/&gt;
+                               &lt;and&gt;
+                                       &lt;istrue value="${context.running}"/&gt;
+                                       &lt;istrue value="${mgr.update}"/&gt;
+                               &lt;/and&gt;
+                               &lt;and&gt;
+                                       &lt;istrue value="${context.stopped}"/&gt;
+                                       &lt;istrue value="${mgr.update}"/&gt;
+                               &lt;/and&gt;
+                       &lt;/or&gt;
+               &lt;/condition&gt;
+               &lt;condition property="context.undeployable"&gt;
+                       &lt;or&gt;
+                               &lt;istrue value="${context.running}"/&gt;
+                               &lt;istrue value="${context.stopped}"/&gt;
+                       &lt;/or&gt;
+               &lt;/condition&gt;
+       &lt;/target&gt;
+</pre></td></tr>
+</table>
+
+<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:
+<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>
+</p>
+
+</subsection>
+
+</section>
+
+<section name="Using the JMX Proxy Servlet">
+
+  <subsection name="What is JMX Proxy Servlet">
+    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.
+  </subsection>
+
+  <subsection name="JMX Query command">
+    This takes the form:
+<source>
+http://webserver/manager/jmxproxy/?qry=STUFF
+</source>
+    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.
+  </subsection>
+
+  <subsection name="JMX Set command">
+    Now that you can query an MBean, its time to muck with Tomcat's internals!
+    The general form of the set command is :
+<source>
+http://webserver/manager/jmxproxy/?set=BEANNAME&amp;att=MYATTRIBUTE&amp;val=NEWVALUE
+</source>
+    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.
+<source>
+http://localhost:8080/manager/jmxproxy/
+?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost&amp;att=debug&amp;val=10
+</source>
+    and my result is (YMMV):
+<source>
+Result: ok
+</source>
+
+    Here is what I see if I pass in a bad value. Here is the URL I used,
+    I try set debugging equal to 'cowbell':
+<source>
+http://localhost:8080/manager/jmxproxy/
+?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost&amp;att=debug&amp;val=cowbell
+</source>
+    When I try that, my result is
+<source>
+Error: java.lang.NumberFormatException: For input string: "cowbell"
+</source>
+  </subsection>
+
+
+</section>
+
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/mbeans-descriptor-howto.xml b/webapps/docs/mbeans-descriptor-howto.xml
new file mode 100644 (file)
index 0000000..69df84e
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="mbeans-descriptor-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="amyroh@apache.org">Amy Roh</author>
+        <title>MBean Descriptor How To</title>
+    </properties>
+
+<body>
+
+<section name="Introduction">
+
+<p>Tomcat 5 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>
+
+</section>
+
+<section name="Adding MBean descriptions">
+
+<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>
+
+<source>
+  &lt;mbean         name="LDAPRealm"
+            className="org.apache.catalina.mbeans.ClassNameMBean"
+          description="Custom LDAPRealm"
+               domain="Catalina"
+                group="Realm"
+                 type="com.myfirm.mypackage.LDAPRealm"&gt;
+
+    &lt;attribute   name="className"
+          description="Fully qualified class name of the managed object"
+                 type="java.lang.String"
+            writeable="false"/&gt;
+
+    &lt;attribute   name="debug"
+          description="The debugging detail level for this component"
+                 type="int"/&gt;
+    .
+    .
+    .
+
+  &lt;/mbean&gt;
+</source>
+
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/monitoring.xml b/webapps/docs/monitoring.xml
new file mode 100644 (file)
index 0000000..e6cdae8
--- /dev/null
@@ -0,0 +1,1137 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="monitoring.html">
+
+  &project;
+
+  <properties>
+    <author email="pero@apache.org">Peter Rossbach</author>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <title>Monitoring and Managing Tomcat</title>
+  </properties>
+
+<body>
+
+  <section name="Introduction">
+
+  <p>Monitoring is a very important question today. Looking inside the running
+        server, grab some statistic data or reconfigure some aspects are 
+        daliy adminstration tasks.</p>  
+  
+  </section>
+
+  <section name="Enabling JMX Remote">
+
+    <p>The Sun website includes the list of options and how to configure JMX Remote on Java 5:
+        <a href="http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html">
+        http://java.sun.com/j2se/1.5.0/docs/guide/management/agent.html</a>.
+    </p>
+    <p>For quick installation you find here a short installation guide:</p>
+    <p>Add the following parameters to your tomcat startup script:
+    <source>
+    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"
+    </source>
+    </p>
+    <p>
+    <ol>
+    <li>When you think authorisation is a good, add and change this :
+    <source>
+    -Dcom.sun.management.jmxremote.authenticate=true \
+    -Dcom.sun.management.jmxremote.password.file=../conf/jmxremote.password \
+    -Dcom.sun.management.jmxremote.access.file=../conf/jmxremote.access \
+    </source>
+    </li>
+    <li>edit the access allow file <em>$CATALINA_BASE/conf/jmxremote.access</em> :
+    <source>
+monitorRole readonly
+controlRole readwrite
+    </source>
+    </li>
+    <li>edit the password file <em>$CATALINA_BASE/conf/jmxremote.password</em> :
+    <source>
+monitorRole tomcat
+controlRole tomcat
+    </source>
+    <b>Tipp</b>: Password File must be readonly and not accessable from every 
+    other user! Remove all other users under windows to access this file.
+    </li>
+    </ol>
+    <b>Note:</b>The JSR 160 JMX-Adaptor opens a second data protocol port. That is a problem
+    when you have installed a local firewall.<br/>
+    </p>
+    <p>Activate JMX MX4J Http Adaptor with Java 1.4:
+    <ol>
+      <li>Install the tomcat compat package</li>
+      <li>Install the mx4j-tools.jar at common/lib. Please, use the same MX4j 
+          version as your tomcat release</li>
+      <li>Configure a MX4J JMX HTTP Adaptor at your AJP Connector
+      <p>
+      <source>
+      &lt;Connector port="${AJP.PORT}" 
+            handler.list="mx" 
+            mx.enabled="true" 
+            mx.httpHost="${JMX.HOST}"
+            mx.httpPort="${JMX.PORT}"
+            protocol="AJP/1.3" /&gt;
+      </source>
+      </p>
+      <p><b>Tipp</b>: With <em>${AJP.PORT}=0</em> no ajp connection where started. 
+      </p>
+      <p><b>Note</b>: MX4J JSR 160 RMI Adaptor to support JDK 1.4 currently not integrated.
+      </p>
+      </li>
+      <li>Start your tomcat and look with a browser at http://${JMX.HOST}:${JMX.PORT}</li>
+      <li>With the mx connector parameter <code>mx.authMode="basic" mx.authUser="tomcat" mx.authPassword="strange"</code> 
+          you can control the access!</li>
+      <li>A complete list of all tomcat core MBeans can you find at <a href="http://jakarta.apache.org/tomcat/tomcat-5.5-doc/catalina/funcspecs/mbean-names.html">
+        http://jakarta.apache.org/tomcat/tomcat-5.5-doc/catalina/funcspecs/mbean-names.html</a>.</li>
+    </ol>
+    </p>
+
+  </section>
+
+  <section name="Manage Tomcat with JMX remote Ant Tasks">
+   <p>For simple tomcat ant task usage with ant 1.6.x we have integrate import and antlib support.</p>   
+   <p><b>antlib</b>Copy your catalina-ant.jar from $CATALINA_HOME/server/lib to $ANT_HOME/lib.</p>
+   <p>Following example show the JMX Accessor usage:</p>
+   <table border="1">
+   <tr><td><p><pre>
+&lt;project name="Catalina Ant JMX" 
+        xmlns:jmx="antlib:org.apache.catalina.ant.jmx" 
+        default="state"
+        basedir="."&gt;
+    &lt;property name="jmx.server.name" value="localhost" /&gt;
+    &lt;property name="jmx.server.port" value="9012" /&gt;
+    &lt;property name="cluster.server.address" value="192.168.1.75" /&gt;
+    &lt;property name="cluster.server.port" value="9025" /&gt;
+    &lt;target name="state" description="Show JMX Cluster state"&gt;
+        &lt;jmx:open
+            host="${jmx.server.name}"
+            port="${jmx.server.port}"
+            username="controlRole"
+            password="tomcat"/&gt;
+        &lt;jmx:get
+            name="Catalina:type=IDataSender,host=localhost,senderAddress=${cluster.server.address},senderPort=${cluster.server.port}" 
+            attribute="connected"
+            resultproperty="IDataSender.backup.connected"
+            echo="false"
+        /&gt;
+       &lt;jmx:get
+            name="Catalina:type=ClusterSender,host=localhost" 
+            attribute="senderObjectNames"
+            resultproperty="senderObjectNames"
+            echo="false"
+        /&gt;
+        &lt;!-- get current maxActiveSession from ClusterTest application
+             echo it to ant output and store at 
+             property &lt;em&gt;clustertest.maxActiveSessions.orginal&lt;/em&gt;
+        --&gt;
+       &lt;jmx:get
+            name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
+            attribute="maxActiveSessions"
+            resultproperty="clustertest.maxActiveSessions.orginal"
+            echo="true"
+        /&gt;
+        &lt;!-- set maxActiveSession to 100
+        --&gt;
+        &lt;jmx:set
+            name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
+            attribute="maxActiveSessions"
+            value="100"
+            type="int"
+        /&gt;
+        &lt;!-- get all sessions and split result as delimiter &lt;em&gt;SPACE&lt;/em&gt; for easy
+             access all session ids directly with ant property sessions.[0..n].
+        --&gt;
+        &lt;jmx:invoke
+            name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
+            operation="listSessionIds"
+            resultproperty="sessions"
+            echo="false"
+            delimiter=" "
+        /&gt;
+        &lt;!-- Access session attribute &lt;em&gt;Hello&lt;/em&gt; from first session.
+        --&gt;
+        &lt;jmx:invoke
+            name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
+            operation="getSessionAttribute"
+            resultproperty="Hello"
+            echo="false"
+        &gt;
+          &lt;arg value="${sessions.0}"/&gt;
+          &lt;arg value="Hello"/&gt;
+        &lt;/jmx:invoke&gt; 
+        &lt;!-- Query for all application manager.of the server from all hosts
+             and bind all attributes from all found manager mbeans.
+        --&gt;
+        &lt;jmx:query
+            name="Catalina:type=Manager,*" 
+            resultproperty="manager"
+            echo="true"
+            attributebinding="true"
+        /&gt;
+        &lt;!-- echo the create properties --&gt;
+        &lt;echo&gt;
+           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}
+        &lt;/echo&gt;   
+
+    &lt;/target&gt;
+&lt;/project&gt;
+   </pre></p>
+   </td></tr>
+</table>
+   <p><b>import:</b> Import the JMX Accessor Projekt with 
+   <em>&lt;import file="${CATALINA.HOME}/bin/jmxaccessor-tasks.xml" /&gt;</em> and
+   reference the tasks with <em>jmxOpen</em>, <em>jmxSet</em>, <em>jmxGet</em>,
+    <em>jmxQuery</em>, <em>jmxInvoke</em>,<em>jmxEquals</em> and <em>jmxCondition</em>. </p>
+
+  </section>
+
+<!-- Open ######################################################################### 
+-->
+
+<section name="JMXAccessorOpenTask - jmx open connection task">
+<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 referenz. With this attribute you can
+        configure more the one connection inside the same ant projekt.
+    </td>
+    <td><code>jmx.server</code></td>
+  </tr>
+
+  <tr>
+    <td>echo</td>
+    <td>Echo the command usage (for analyse access 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/>
+<source>
+    &lt;jmx:open
+            host="${jmx.server.name}"
+            port="${jmx.server.port}"
+    /&gt;
+</source>
+</p>  
+<p>
+Example to open a jmx connection from url, with authorisation and 
+store at other reference <br/>
+<source>
+    &lt;jmx:open
+            url="service:jmx:rmi:///jndi/rmi://localhost:9024/jmxrmi"
+            ref="jmx.server.9024"
+            username="controlRole"
+            password="tomcat"    
+    /&gt;
+</source>
+</p>  
+
+<p>
+Example to open a jmx connection from url, with authorisation and 
+store at other reference, but only when property <em>jmx.if</em> exists and 
+<em>jmx.unless</em> not exists<br/>
+<source>
+    &lt;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"    
+    /&gt;
+</source>
+</p> 
+<p><b>Note</b>: All properties from <em>jmxOpen</em> task also exists at all 
+other tasks and conditions. 
+</p>
+
+</section>
+
+<!-- Get ######################################################################### 
+-->
+
+<section name="JMXAccessorGetTask:  get attribute value ant task">
+<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.lenght</em>) 
+    </td>
+    <td><code>true</code></td>
+  </tr>
+
+</table>
+</p>
+<p>
+Example to get remote mbean attribute from default jmx connection <br/>
+<source>
+    &lt;jmx:get
+        name="Catalina:type=Manager,path=/servlets-examples,host=localhost" 
+        attribute="maxActiveSessions"
+        resultproperty="servlets-examples.maxActiveSessions"
+    /&gt;
+</source>
+</p>  
+<p>
+Example to get and result array and split it at separate properties<br/>
+<source>
+    &lt;jmx:get
+        name="Catalina:type=ClusterSender,host=localhost" 
+        attribute="senderObjectNames"
+        resultproperty="senderObjectNames"
+    /&gt;
+</source>
+Access the senderObjectNames properties with:
+<source>
+    ${senderObjectNames.lenght} give the number of returned sender list.
+    ${senderObjectNames.[0..N]} found all sender object names
+</source>
+</p>  
+
+<p>
+Example to get IDataSender attribute connected only when cluster is configured.
+<source>
+&lt;jmx:query
+    failonerror="false"
+    name="Catalina:type=Cluster,host=${tomcat.application.host}"
+    resultproperty="cluster"
+/&gt;
+&lt;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" /&gt;
+</source>
+</p>  
+
+</section>
+
+<!-- Set ######################################################################### 
+-->
+
+<section name="JMXAccessorSetTask:  set attribute value ant task">
+<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/>
+<source>
+    &lt;jmx:set
+        name="Catalina:type=Manager,path=/servlets-examples,host=localhost" 
+        attribute="maxActiveSessions"
+        value="500"
+        type="int"
+    /&gt;
+</source>
+</p>  
+
+</section>
+
+<!-- Invoke ######################################################################### 
+-->
+
+<section name="JMXAccessorInvokeTask:  invoke Mbean operation ant task">
+<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="http://jakarta.apache.org/tomcat/tomcat-5.5-doc/catalina/funcspecs/fs-admin-opers.html">
+        http://jakarta.apache.org/tomcat/tomcat-5.5-doc/catalina/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.lenght</em>) 
+    </td>
+    <td><code>true</code></td>
+  </tr>
+
+</table>
+</p>
+<p>
+stop an application <br/>
+<source>
+    &lt;jmx:invoke
+        name="Catalina:type=Manager,path=/servlets-examples,host=localhost" 
+        operation="stop"/&gt;
+</source>
+Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count
+with ${sessions.lenght} property.
+</p>  
+<p>
+Example to get all sessionids <br/>
+<source>
+    &lt;jmx:invoke
+        name="Catalina:type=Manager,path=/servlets-examples,host=localhost" 
+        operation="listSessionIds"
+        resultproperty="sessions"
+        delimiter=" "        
+    /&gt;
+</source>
+Now you can find the sessionid at <em>${sessions.[0..N}</em> properties and access the count
+with ${sessions.lenght} property.
+</p>  
+<p>
+Example to get remote mbean session attribute from session ${sessionid.0}<br/>
+<source>
+    &lt;jmx:invoke
+        name="Catalina:type=Manager,path=/ClusterTest,host=localhost" 
+        operation="getSessionAttribute"
+        resultproperty="hello"&gt;
+         &lt;arg value="${sessionid.0}"/&gt;
+         &lt;arg value="Hello" /&gt;
+ &lt;/jmx:invoke&gt;
+</source>
+</p>
+<p>
+Example to create a new access logger valve at vhost <em>localhost</em>
+<source>
+ &lt;jmx:invoke
+         name="Catalina:type=MBeanFactory" 
+         operation="createAcccesLoggerValve"
+         resultproperty="acccesLoggerObjectName"
+ &gt;
+     &lt;arg value="Catalina:type=Host,host=localhost"/&gt;
+ &lt;/jmx:invoke&gt;
+</source>
+Now you can find new Mbean with name stored at <em>${acccesLoggerObjectName}</em>
+proeprty.
+</p>  
+
+</section>
+
+<!-- Query ######################################################################### 
+-->
+
+<section name="JMXAccessorQueryTask:  query Mbean ant task">
+<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.lenght</em>) 
+    </td>
+    <td><code>true</code></td>
+  </tr>
+
+</table>
+</p>
+<p>
+Get all Manager ObjectNames from all services and Hosts <br/>
+<source>
+  &lt;jmx:query
+           name="Catalina:type=Manager,* 
+           resultproperty="manager" /&gt;
+</source>
+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/>
+<source>
+  &lt;jmx:query
+           name="Catalina:type=Manager,path=/servlet-examples,host=localhost*" 
+           attributebinding="true"
+           resultproperty="manager.servletExamples" /&gt;
+</source>
+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/>
+<source>
+&lt;project name="jmx.query"         
+            xmlns:jmx="antlib:org.apache.catalina.ant.jmx"
+            default="query-all" basedir="."&gt;
+&lt;property name="jmx.host" value="localhost"/&gt;
+&lt;property name="jmx.port" value="8050"/&gt;
+&lt;property name="jmx.username" value="controlRole"/&gt;
+&lt;property name="jmx.password" value="tomcat"/&gt;
+
+&lt;target name="query-all" description="Query all MBeans of a server"&gt;
+&lt;!-- Configure connection --&gt;
+&lt;jmx:open 
+    host="${jmx.host}"
+    port="${jmx.port}"
+    ref="jmx.server"
+    username="${jmx.username}"
+    password="${jmx.password}"/&gt;
+&lt;!-- Query MBean list --&gt;
+&lt;jmx:query 
+    name="*:*"
+    resultproperty="mbeans"
+    attributebinding="false"/&gt;
+    
+&lt;echoproperties
+    destfile="mbeans.properties"
+    prefix="mbeans."
+    format="xml"/&gt;
+    
+&lt;!-- Print results --&gt;
+&lt;echo
+    message="Number of MBeans in server ${jmx.host}:${jmx.port} is ${mbeans.length}"/&gt;
+&lt;/target&gt;
+&lt;/project&gt;
+</source>
+Now you can find all MBeans inside the file <em>mbeans.properties</em>.
+</p>  
+
+</section>
+
+<!-- Create ######################################################################### 
+-->
+
+<section name="JMXAccessorCreateTask:  remote create mbean ant task">
+<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 classname (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,path=/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/>
+<source>
+    &lt;jmx:create
+             ref="${jmx.reference}"
+             name="Catalina:type=MBeanFactory"
+             className="org.apache.commons.modeler.BaseModelMBean"
+             classLoader="Catalina:type=ServerClassLoader,name=server"&gt;             
+             &lt;Arg value="org.apache.catalina.mbeans.MBeanFactory" /&gt;
+    &lt;/jmx:create&gt; 
+</source>
+</p>  
+<p>
+    <b>Warning</b>: A lot of tomcat mbeans can't be really create and connect with <br/>
+    the parent. The valve, cluster or realm Mbeans are not autconnect with there parent.<br/> 
+    Use <em>MBeanFacrory</em> create operation instead.
+</p>
+
+</section>
+
+<!-- Unregister ######################################################################### 
+-->
+
+<section name="JMXAccessorUnregisterTask:  remote unregister mbean ant task">
+<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/>
+<source>
+    &lt;jmx:unregister
+        name="Catalina:type=MBeanFactory" 
+    /&gt;
+</source>
+</p>  
+<p>
+    <b>Warning</b>: A lot of tomcat mbeans can't be really unregister. <br/>
+    The Mbeans are not deregister from parent. Use <em>MBeanFacrory</em> <br/>
+    remove operation instead.
+</p>
+
+</section>
+
+<!-- condition ######################################################################### 
+-->
+
+<section name="JMXAccessorCondition:  express condition">
+<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 projekt.
+    </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>&gt; greater than (&amp;gt;)</li>
+    <li>&gt;= greater than or equals (&amp;gt;=)</li>
+    <li>&lt; lesser than (&amp;lt;)</li>
+    <li>&lt;= lesser than or equals (&amp;lt;=)</li>
+    </ul>         
+    </td>
+    <td><code>==</code></td>
+  </tr>
+
+</table>
+</p>
+<p>
+Wait for server connection and that cluster backup node is accessable<br/>
+<source>
+      &lt;target name="wait"&gt;
+         &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;
+            &lt;and&gt;
+                &lt;socket server="${server.name}" port="${server.port}"/&gt;
+                &lt;http url="${url}"/&gt;
+                &lt;jmx:condition
+                    operation="==" 
+                    host="localhost" 
+                    port="9014"
+                    username="controlRole"
+                    password="tomcat"
+                    name="Catalina:type=IDataSender,host=localhost,senderAddress=192.168.111.1,senderPort=9025"
+                    attribute="connected"
+                    value="true"
+                /&gt;
+            &lt;/and&gt;
+        &lt;/waitfor&gt;
+        &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;
+        &lt;echo message="Server ${url} alive" /&gt;
+    &lt;/target&gt;
+</source>
+</p>  
+
+</section>
+
+<!-- Equals ######################################################################### 
+-->
+
+<section name="JMXAccessorEqualsCondition:  equals Mbean ant condition">
+<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 referenz. With this attribute you can
+        configure more the one connection inside the same ant projekt.
+    </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 accessable<br/>
+<source>
+      &lt;target name="wait"&gt;
+         &lt;waitfor maxwait="${maxwait}" maxwaitunit="second" timeoutproperty="server.timeout" &gt;
+            &lt;and&gt;
+                &lt;socket server="${server.name}" port="${server.port}"/&gt;
+                &lt;http url="${url}"/&gt;
+                &lt;jmx: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"
+                /&gt;
+            &lt;/and&gt;
+        &lt;/waitfor&gt;
+        &lt;fail if="server.timeout" message="Server ${url} don't answer inside ${maxwait} sec" /&gt;
+        &lt;echo message="Server ${url} alive" /&gt;
+    &lt;/target&gt;
+</source>
+</p>  
+
+</section>
+
+</body>
+</document>
diff --git a/webapps/docs/project.xml b/webapps/docs/project.xml
new file mode 100644 (file)
index 0000000..7e9bbe3
--- /dev/null
@@ -0,0 +1,72 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<project name="Apache Tomcat Documentation - Top Level Directory"
+        href="http://jakarta.apache.org/tomcat/">
+
+    <title>The Apache Tomcat 6.0 Servlet/JSP Container</title>
+
+    <logo href="/images/tomcat.gif">
+      The Apache Tomcat Servlet/JSP Container
+    </logo>
+
+
+    <body>
+
+    <menu name="Links">
+        <item name="Docs Home"             href="index.html"/>
+        <item name="FAQ"                   href="../faq" />
+    </menu>
+
+    <menu name="User Guide">
+        <item name="1) Introduction"        href="introduction.html"/>
+        <item name="2) Setup"               href="setup.html"/>
+        <item name="3) First webapp"        href="appdev/index.html"/>
+        <item name="4) Deployer"            href="deployer-howto.html"/>
+        <item name="5) Manager"             href="manager-howto.html"/>
+        <item name="6) Realms and AAA"      href="realm-howto.html"/>
+        <item name="7) Security Manager"
+              href="security-manager-howto.html"/>
+        <item name="8) JNDI Resources"      href="jndi-resources-howto.html"/>
+        <item name="9) JDBC DataSources"
+              href="jndi-datasource-examples-howto.html"/>
+        <item name="10) Classloading"       href="class-loader-howto.html"/>
+        <item name="11) JSPs"               href="jasper-howto.html"/>
+        <item name="12) SSL"                href="ssl-howto.html"/>
+        <item name="13) SSI"                href="ssi-howto.html"/>
+        <item name="14) CGI"                href="cgi-howto.html"/>
+        <item name="15) Proxy Support"      href="proxy-howto.html"/>
+        <item name="16) MBean Descriptor"
+              href="mbeans-descriptor-howto.html"/>
+        <item name="17) Default Servlet"    href="default-servlet.html"/>
+        <item name="18) Clustering"         href="cluster-howto.html"/>
+        <item name="19) Load Balancer"      href="balancer-howto.html"/>
+        <item name="20) Connectors"         href="connectors.html"/>
+        <item name="21) Monitoring and Management"         
+              href="monitoring.html"/>
+        <item name="22) Logging"            href="logging.html"/>
+        <item name="23) APR"                href="apr.html"/>
+        <item name="24) Asynchronous APIs"  href="async.html"/>
+    </menu>
+
+    <menu name="Reference">
+        <item name="Release Notes"         href="RELEASE-NOTES.txt"/>
+        <item name="Apache Tomcat Configuration"  href="config/index.html"/>
+        <item name="JK 1.2 Documentation"      
+              href="http://jakarta.apache.org/tomcat/connectors-doc/"/>
+        <item name="Servlet API Javadocs"  href="servletapi/index.html"/>
+        <item name="JSP API Javadocs"      href="jspapi/index.html"/>
+    </menu>
+
+    <menu name="Apache Tomcat Development">
+        <item name="Building"              href="building.html"/>
+        <item name="Changelog"             href="changelog.html"/>
+        <item name="Status"                href="status.html"/>
+        <item name="Developers"            href="developers.html"/>
+        <item name="Functional Specs."     href="catalina/funcspecs/index.html"/>
+        <item name="Apache Tomcat Javadocs"       href="catalina/docs/api/index.html"/>
+        <item name="Apache Jasper Javadocs"       href="jasper/docs/api/index.html"/>
+        <item name="Architecture"          href="architecture/index.html" />
+    </menu>
+
+    </body>
+
+</project>
diff --git a/webapps/docs/proxy-howto.xml b/webapps/docs/proxy-howto.xml
new file mode 100644 (file)
index 0000000..0def1c9
--- /dev/null
@@ -0,0 +1,136 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="proxy-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+        <title>Proxy Support HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Introduction">
+
+<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>&lt;Connector&gt;</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>
+
+</section>
+
+<section name="Apache 1.3 Proxy Support">
+
+<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 5 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:
+<source>
+LoadModule proxy_module  {path-to-modules}/mod_proxy.so
+AddModule  mod_proxy.c
+</source></li>
+<li>Include two directives in your <code>httpd.conf</code> file for
+    each web application that you wish to forward to Tomcat 5.  For
+    example, to forward an application at context path <code>/myapp</code>:
+<source>
+ProxyPass         /myapp  http://localhost:8081/myapp
+ProxyPassReverse  /myapp  http://localhost:8081/myapp
+</source>
+    which tells Apache to forward URLs of the form
+    <code>http://localhost/myapp/*</code> to the Tomcat 5 connector
+    listening on port 8081.</li>
+<li>Configure your copy of Tomcat 5 to include a special
+    <code>&lt;Connector&gt;</code> element, with appropriate
+    proxy settings, for example:
+<source>
+&lt;Connector port="8081" ...
+              proxyName="www.mycompany.com"
+              proxyPort="80"/&gt;
+</source>
+    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>&lt;Connector&gt;</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>&lt;Connector&gt;</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>&lt;Service&gt;</code> that contains
+        only a <code>&lt;Connector&gt;</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>
+
+</section>
+
+<section name="Apache 2.0 Proxy Support">
+The same instructions hold true as for 1.3. (Except in Apache 2.0,
+you may omit <code>AddModule  mod_proxy.c</code>)
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/realm-howto.xml b/webapps/docs/realm-howto.xml
new file mode 100644 (file)
index 0000000..27d93d5
--- /dev/null
@@ -0,0 +1,1422 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="realm-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="craigmcc@apache.org">Craig R. McClanahan</author>
+        <author email="yoavs@apache.org">Yoav Shapira</author>
+        <author email="arjaquith@mindspring.com">Andrew R. Jaquith</author>
+        <title>Realm Configuration HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Table of Contents">
+
+<p>
+<a href="#Quick Start">Quick Start</a><br />
+<blockquote>
+<a href="#What is a Realm?">What is a Realm?</a><br />
+<a href="#Configuring a Realm">Configuring a Realm</a><br />
+</blockquote>
+<a href="#Common Features">Common Features</a><br />
+<blockquote>
+<a href="#Digested Passwords">Digested Passwords</a><br />
+<a href="#Example Application">Example Application</a><br />
+<a href="#Manager Application">Manager Application</a><br />
+<a href="#Realm Logging">Logging Within Realms</a><br />
+</blockquote>
+<a href="#Standard Realm Implementations">
+Standard Realm Implementations</a><br />
+<blockquote>
+<a href="#JDBCRealm">JDBCRealm</a><br />
+<a href="#DataSourceRealm">DataSourceRealm</a><br />
+<a href="#JNDIRealm">JNDIRealm</a><br />
+<a href="#MemoryRealm">MemoryRealm</a><br />
+<a href="#JAASRealm">JAASRealm</a><br />
+</blockquote>
+</p>
+
+</section>
+
+<section name="Quick Start">
+
+<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>&lt;security-constraint&gt;</code> elements, and a
+<code>&lt;login-config&gt;</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://java.sun.com/products/servlet/download.html">Servlet
+Specification (Version 2.4)</a>, Section 12.</p>
+
+<p>For information about utilizing the <em>Single Sign On</em> feature of
+Tomcat 5 (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>
+
+</section>
+
+
+<section name="Overview">
+
+
+<subsection name="What is a Realm?">
+
+<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 desireable to "connect"
+a servlet container to some existing authentication database or mechanism
+that already exists in the production environment.  Therefore, Tomcat 5
+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="#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 &amp; Authorization Service (JAAS)
+    framework.</li>
+</ul>
+
+<p>It is also possible to write your own <code>Realm</code> implementation,
+and integrate it with Tomcat 5.  To do so, you need to:
+<ul>
+  <li>Implement <code>org.apache.catalina.Realm</code>,</li>
+  <li>Place your compiled realm in $CATALINA_HOME/server/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>
+
+</subsection>
+
+
+<subsection name="Configuring a Realm">
+
+<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>
+
+<source>
+&lt;Realm className="... class name for this implementation"
+       ... other attributes for this implementation .../&gt;
+</source>
+
+<p>The <code>&lt;Realm&gt;</code> element can be nested inside any one of 
+of the following <code>Container</code> elements.  The location of the
+Realm element has a direct impact on the "scope" of that Realm
+(i.e. which web applications will share the same authentication information):
+</p>
+<ul>
+<li><em>Inside an &lt;Engine&gt; 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>&lt;Host&gt;</code>
+    or <code>&lt;Context&gt;</code> element.</li>
+<li><em>Inside a &lt;Host&gt; 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>&lt;Context&gt;</code>
+    element.</li>
+<li><em>Inside a &lt;Context&gt; element</em> - This Realm will be used ONLY
+    for THIS web application.</li>
+</ul>
+
+
+</subsection>
+
+
+</section>
+
+
+<section name="Common Features">
+
+
+<subsection name="Digested Passwords">
+
+<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 undesireable 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>&lt;Realm&gt;</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
+<source>
+java org.apache.catalina.realm.RealmBase \
+    -a {algorithm} {cleartext-password}
+</source>
+    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. 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:localhost:8080:testPassword</code>.</p>
+
+<p>To use either of the above techniques, the
+<code>$CATALINA_HOME/server/lib/catalina.jar</code> file will need to be
+on your class path to make the <code>RealmBase</code> class available.  In 
+addition, you will need the JMX jar and the commons-logging jar (either 
+commons-logging-api.jar or commons-logging.jar).  Both of these are included
+with the Tomcat distribution.
+</p>
+
+<p>Non-ASCII usernames and/or passwords are supported using
+<source>java org.apache.catalina.realm.RealmBase \
+    -a {algorithm} -e {encoding} {input}
+</source>
+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>
+
+</subsection>
+
+
+
+<subsection name="Example Application">
+
+<p>The example application shipped with Tomcat 5 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/jsp-examples/security/protected/">http://localhost:8080/jsp-examples/security/protected/</a>
+and log on with one of the usernames and passwords described for the default
+<a href="#MemoryRealm">MemoryRealm</a>.</p>
+
+</subsection>
+
+
+<subsection name="Manager Application">
+
+<p>If you wish to use the <a href="manager-howto.html">Manager Application</a>
+to deploy and undeploy applications in a running Tomcat 5 installation, you
+MUST add the "manager" 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" to access ANY request URI
+within 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" role.  Therfore,
+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>
+
+</subsection>
+
+<subsection name="Realm Logging">
+
+<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>
+
+</subsection>
+
+</section>
+
+
+<section name="Standard Realm Implementations">
+
+<subsection name="JDBCRealm">
+
+<h3>Introduction</h3>
+
+<p><strong>JDBCRealm</strong> is an implementation of the Tomcat 5
+<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/server/lib</code> directory (if you do not need it
+    visible to web applications) or <code>$CATALINA_HOME/common/lib</code>
+    (if it will be used both by Tomcat 5 <em>and</em> by your apps).
+    Note that <strong>only</strong> JAR files are recognized!</li>
+<li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your
+    <code>$CATALINA_HOME/conf/server.xml</code> file.</li>
+<li>Restart Tomcat 5 if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure JDBCRealm, you will create a <code>&lt;Realm&gt;</code>
+element and nest it in your <code>$CATALINA_HOME/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>.  The following
+attributes are supported by this implementation:</p>
+
+<attributes>
+
+  <attribute name="className" required="true">
+    <p>The fully qualified Java class name of this Realm implementation.
+    You <strong>MUST</strong> specify the value
+    "<code>org.apache.catalina.realm.JDBCRealm</code>" here.</p>
+  </attribute>
+
+  <attribute name="connectionName" required="true">
+    <p>The database username used to establish a JDBC connection.</p>
+  </attribute>
+
+  <attribute name="connectionPassword" required="true">
+    <p>The database password used to establish a JDBC connection.</p>
+  </attribute>
+
+  <attribute name="connectionURL" required="true">
+    <p>The database URL used to establish a JDBC connection.</p>
+  </attribute>
+
+  <attribute name="digest" required="false">
+    <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.  See
+    <a href="#Digested Passwords">Digested Passwords</a> for more
+    information.  If not specified, passwords are stored in clear text.</p>
+  </attribute>
+
+  <attribute name="driverName" required="true">
+    <p>The fully qualified Java class name of the JDBC driver to be used.
+    Consult the documentation for your JDBC driver for the appropriate
+    value.</p>
+  </attribute>
+
+  <attribute name="roleNameCol" required="true">
+    <p>The name of the column, in the <em>user roles</em> table, that
+    contains the name of a role assigned to this user.</p>
+  </attribute>
+
+  <attribute name="userCredCol" required="true">
+    <p>The name of the column, in the <em>users</em> table, that contains
+    the password for this user (either in clear text, or digested if the
+    <code>digest</code> attribute is set).</p>
+  </attribute>
+
+  <attribute name="userNameCol" required="true">
+    <p>The name of the column, in the <em>users</em> and <em>user roles</em>
+    tables, that contains the username of this user.</p>
+  </attribute>
+
+  <attribute name="userRoleTable" required="true">
+    <p>The name of the table that contains one row for each <em>role</em>
+    assigned to a particular <em>username</em>.  This table must include at
+    least the columns named by the <code>userNameCol</code> and
+    <code>roleNameCol</code> attributes.</p>
+  </attribute>
+
+  <attribute name="userTable" required="true">
+    <p>The name of the table that contains one row for each <em>username</em>
+    to be recognized by Tomcat.  This table must include at least the columns
+    named by the <code>userNameCol</code> and <code>userCredCol</code>
+    attributes.</p>
+  </attribute>
+
+</attributes>
+
+<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>
+<source>
+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)
+);
+</source>
+
+<p>Example <code>Realm</code> elements are included (commented out) in the
+default <code>$CATALINA_HOME/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>
+<source>
+&lt;Realm className="org.apache.catalina.realm.JDBCRealm" debug="99"
+      driverName="org.gjt.mm.mysql.Driver"
+   connectionURL="jdbc:mysql://localhost/authority?user=dbuser&amp;amp;password=dbpass"
+       userTable="users" userNameCol="user_name" userCredCol="user_pass"
+   userRoleTable="user_roles" roleNameCol="role_name"/&gt;
+</source>
+
+<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 5 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>
+
+</subsection>
+
+
+<subsection name="DataSourceRealm">
+
+<h3>Introduction</h3>
+
+<p><strong>DataSourceRealm</strong> is an implementation of the Tomcat 5
+<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>&lt;Realm&gt;</code> element, as described below, in your
+    <code>$CATALINA_HOME/conf/server.xml</code> file.</li>
+<li>Restart Tomcat 5 if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure DataSourceRealm, you will create a <code>&lt;Realm&gt;</code>
+element and nest it in your <code>$CATALINA_HOME/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>.  The following
+attributes are supported by this implementation:</p>
+
+<attributes>
+
+  <attribute name="className" required="true">
+    <p>The fully qualified Java class name of this Realm implementation.
+    You <strong>MUST</strong> specify the value
+    "<code>org.apache.catalina.realm.DataSourceRealm</code>" here.</p>
+  </attribute>
+
+  <attribute name="dataSourceName" required="true">
+    <p>The JNDI named JDBC DataSource for your database. If the DataSource is
+    local to the context, the name is relative to <code>java:/comp/env</code>,
+    and otherwise the name should match the name used to define the global
+    DataSource.</p>
+  </attribute>
+
+  <attribute name="digest" required="false">
+    <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.  See
+    <a href="#Digested Passwords">Digested Passwords</a> for more
+    information.  If not specified, passwords are stored in clear text.</p>
+  </attribute>
+    
+  <attribute name="localDataSource" required="false">
+    <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>
+  </attribute>
+    
+  <attribute name="roleNameCol" required="true">
+    <p>The name of the column, in the <em>user roles</em> table, that
+    contains the name of a role assigned to this user.</p>
+  </attribute>
+    
+  <attribute name="userCredCol" required="true">
+    <p>The name of the column, in the <em>users</em> table, that contains
+    the password for this user (either in clear text, or digested if the
+    <code>digest</code> attribute is set).</p>
+  </attribute>
+    
+  <attribute name="userNameCol" required="true">
+    <p>The name of the column, in the <em>users</em> and <em>user roles</em>
+    tables, that contains the username of this user.</p>
+  </attribute>
+
+  <attribute name="userRoleTable" required="true">
+    <p>The name of the table that contains one row for each <em>role</em>
+    assigned to a particular <em>username</em>.  This table must include at
+    least the columns named by the <code>userNameCol</code> and
+    <code>roleNameCol</code> attributes.</p>
+  </attribute>
+
+  <attribute name="userTable" required="true">
+    <p>The name of the table that contains one row for each <em>username</em>
+    to be recognized by Tomcat.  This table must include at least the columns
+    named by the <code>userNameCol</code> and <code>userCredCol</code>
+    attributes.</p>
+  </attribute>
+
+</attributes>
+
+<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>
+<source>
+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)
+);
+</source>
+
+<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>
+<source>
+&lt;Realm className="org.apache.catalina.realm.DataSourceRealm" debug="99"
+   dataSourceName="jdbc/authority"
+   userTable="users" userNameCol="user_name" userCredCol="user_pass"
+   userRoleTable="user_roles" roleNameCol="role_name"/&gt;
+</source>
+
+<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 5 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>
+
+</subsection>
+
+
+<subsection name="JNDIRealm">
+
+<h3>Introduction</h3>
+
+<p><strong>JNDIRealm</strong> is an implementation of the Tomcat 5
+<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 of the authenticated user.</li>
+
+<li><strong>roleName</strong> - the attribute in a role entry
+     containing the name of that role.</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>Place a copy of the JNDI driver you will be using (typically
+    <code>ldap.jar</code> available with JNDI) inside the
+    <code>$CATALINA_HOME/server/lib</code> directory (if you do not need it
+    visible to web applications) or <code>$CATALINA_HOME/common/lib</code>
+    (if it will be used both by Tomcat 5 <em>and</em> by your apps).</li>
+<li>Set up a <code>&lt;Realm&gt;</code> element, as described below, in your
+    <code>$CATALINA_HOME/conf/server.xml</code> file.</li>
+<li>Restart Tomcat 5 if it is already running.</li>
+</ol>
+
+<h3>Realm Element Attributes</h3>
+
+<p>To configure JNDIRealm, you will create a <code>&lt;Realm&gt;</code>
+element and nest it in your <code>$CATALINA_HOME/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>.  The following
+attributes are supported by this implementation:</p>
+
+<attributes>
+  <attribute name="className" required="true">
+    <p>The fully qualified Java class name of this Realm implementation.
+    You <strong>MUST</strong> specify the value
+    "<code>org.apache.catalina.realm.JNDIRealm</code>" here.</p>
+  </attribute>
+
+
+      <attribute name="connectionName" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="connectionPassword" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="connectionURL" required="true">
+        <p>The connection URL to be passed to the JNDI driver when
+        establishing a connection to the directory.</p>
+      </attribute>
+
+      <attribute name="contextFactory" required="false">
+        <p>The fully qualified Java class name of the JNDI context
+        factory to be used for this connection.  By default, the standard
+        JNDI LDAP provider is used
+        (<code>com.sun.jndi.ldap.LdapCtxFactory</code>).</p>
+      </attribute>
+
+      <attribute name="digest" required="false">
+        <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.  See <a
+        href="#Digested Passwords">Digested Passwords</a> for more
+        information. If not specified the plaintext password is assumed to
+        be retrieved. Not required unless <code>userPassword</code> is
+        specified</p>
+      </attribute>
+
+      <attribute name="roleBase" required="false">
+        <p>The base directory entry for performing role searches. If
+        not specified, the top level element in the directory context
+        will be used.</p>
+      </attribute>
+
+      <attribute name="roleName" required="false">
+        <p>The name of the attribute that contains role names in the
+        directory entries found by a role search. In addition you can
+        use the <code>userRoleName</code> property to specify the name
+        of an attribute, in the user's entry, containing additional
+        role names.  If <code>roleName</code> is not specified a role
+        search does not take place, and roles are taken only from the
+        user's entry.</p>
+      </attribute>
+
+      <attribute name="roleSearch" required="false">
+        <p>The LDAP filter expression used for performing role
+        searches, following the syntax supported by the
+        <code>java.text.MessageFormat</code> class.  Use
+        <code>{0}</code> to substitute the distinguished name (DN) of
+        the user, and/or <code>{1}</code> to substitute the
+        username. If not specified a role search does not take place
+        and roles are taken only from the attribute in the user's
+        entry specified by the <code>userRoleName</code> property.</p>
+      </attribute>
+
+      <attribute name="roleSubtree" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userBase" required="false">
+        <p>The base element for user searches performed using the
+        <code>userSearch</code> expression.  If not specified, the top
+        level element in the directory context will be used. Not used
+        if you are using the <code>userPattern</code> expression.</p>
+      </attribute>
+
+      <attribute name="userPassword" required="false">
+        <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 the <code>digest</code>
+        attribute is set, the specified digest algorithm is applied to
+        the password offered by the user before comparing it with the
+        value retrieved from the directory.  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 password specified by the user, with a
+        successful bind being interpreted as an authenticated
+        user.</p>
+      </attribute>
+
+      <attribute name="userPattern" required="false">
+        <p>A pattern for the distinguished name (DN) of the user's
+        directory entry, following the syntax supported by the
+        <code>java.text.MessageFormat</code> class with
+        <code>{0}</code> marking where the actual username should be
+        inserted. You can use this property instead of
+        <code>userSearch</code>, <code>userSubtree</code> and
+        <code>userBase</code> when the distinguished name contains the
+        username and is otherwise the same for all users.</p>
+      </attribute>
+
+      <attribute name="userRoleName" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userSearch" required="false">
+        <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>
+      </attribute>
+
+      <attribute name="userSubtree" required="false">
+        <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>
+      </attribute>
+
+</attributes>
+
+<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>
+<source>
+database ldbm
+suffix dc="mycompany",dc="com"
+rootdn "cn=Manager,dc=mycompany,dc=com"
+rootpw secret
+</source>
+
+<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>
+
+<source>
+
+# 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
+</source>
+
+<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>
+
+<source>
+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
+     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})"
+/&gt;
+</source>
+
+<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>
+
+<source>
+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
+</source>
+
+<p> This realm configuration would satisfy the new requirements:</p>
+
+<source>
+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
+     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})"
+/&gt;
+</source>
+
+<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>
+
+<source>
+&lt;Realm   className="org.apache.catalina.realm.JNDIRealm" debug="99"
+    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})"
+/&gt;
+</source>
+
+<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 5 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>
+
+</subsection>
+
+
+<subsection name="MemoryRealm">
+
+<h3>Introduction</h3>
+
+<p><strong>MemoryRealm</strong> is a simple demonstration implementation of the
+Tomcat 5 <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_HOME/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>&lt;Realm&gt;</code>
+element and nest it in your <code>$CATALINA_HOME/conf/server.xml</code> file,
+as described <a href="#Configuring a Realm">above</a>.  The following
+attributes are supported by this implementation:</p>
+
+<attributes>
+
+  <attribute name="className" required="true">
+    <p>The fully qualified Java class name of this Realm implementation.
+    You <strong>MUST</strong> specify the value
+    "<code>org.apache.catalina.realm.MemoryRealm</code>" here.</p>
+  </attribute>
+
+  <attribute name="digest" required="false">
+    <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.  See
+    <a href="#Digested Passwords">Digested Passwords</a> for more
+    information.  If not specified, passwords are stored in clear text.</p>
+  </attribute>
+
+  <attribute name="pathname" required="false">
+    <p>Absolute or relative (to $CATALINA_HOME) pathname of the XML document
+    containing our valid usernames, passwords, and roles.  See below for more
+    information on the format of this file.  If not specified, the value
+    <code>conf/tomcat-users.xml</code> is used.</p>
+  </attribute>
+
+</attributes>
+
+<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>&lt;tomcat-users&gt;</code>.  Nested
+inside the root element will be a <code>&lt;user&gt;</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>&lt;Realm&gt;</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>Example</h3>
+
+<p>The default installation of Tomcat 5 is configured with a MemoryRealm
+nested inside the <code>&lt;Engine&gt;</code> element, so that it applies
+to all virtual hosts and web applications.  The default contents of the
+<code>conf/tomcat-users.xml</code> file is:</p>
+<source>
+&lt;tomcat-users&gt;
+  &lt;user name="tomcat" password="tomcat" roles="tomcat" /&gt;
+  &lt;user name="role1"  password="tomcat" roles="role1"  /&gt;
+  &lt;user name="both"   password="tomcat" roles="tomcat,role1" /&gt;
+&lt;/tomcat-users&gt;
+</source>
+
+<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 5 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>
+
+
+</subsection>
+
+
+<subsection name="JAASRealm">
+
+<h3>Introduction</h3>
+
+        <p><strong>JAASRealm</strong> is an implementation of the Tomcat
+4 <code>Realm</code> interface that authenticates users through the Java
+Authentication &amp; Authorization Service (JAAS) framework, a Java
+package that is available as an optional package in Java 2 SDK 1.3 and
+is fully integrated as of SDK 1.4 .</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 proposed 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://java.sun.com/j2se/1.4.1/docs/guide/security/jaas/tutorials/GeneralAcnOnly.html">the
+JAAS Authentication Tutorial</a> and 
+<a href="http://java.sun.com/j2se/1.4.1/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://java.sun.com/j2se/1.4.1/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=-DJAVA_OPTS=-Djava.security.auth.login.config==$CATALINA_HOME/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 5 if it is already running.</li>
+        </ol>
+        <h3>Realm Element Attributes</h3>
+        <p>To configure JAASRealm as for step 6 above, you create
+a <code>&lt;Realm&gt;</code> element and nest it in your 
+<code>$CATALINA_HOME/conf/server.xml</code>
+file within your <code>&lt;Engine&gt;</code> node. The following attributes 
+are supported by this implementation:</p>
+
+<attributes>
+
+  <attribute name="className" required="true">
+    <p>The fully qualified Java class name of this Realm implementation.
+    You <strong>MUST</strong> specify the value
+    "<code>org.apache.catalina.realm.JAASRealm</code>" here.</p>
+  </attribute>
+
+  <attribute name="appName" required="true">
+    <p>The name of the application as configured in your login configuration file 
+    (<a href="http://java.sun.com/j2se/1.4.1/docs/guide/security/jaas/tutorials/LoginConfigFile.html">JAAS LoginConfig</a>).</p>
+  </attribute>
+
+  <attribute name="userClassNames" required="true">
+    <p>A comma-seperated list of the names of the classes that you have made 
+    for your user <code>Principals</code>.</p>
+  </attribute>
+
+  <attribute name="roleClassNames" required="false">
+    <p>A comma-seperated list of the names of the classes that you have made 
+    for your role <code>Principals</code>.</p>
+  </attribute>
+
+  <attribute name="useContextClassLoader" required="false">
+    <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 4 works. To load classes using the container's classloader, specify
+    <code>false</code>.</p>
+  </attribute>
+
+</attributes>
+
+<h3>Example</h3>
+
+<p>Here is an example of how your server.xml snippet should look.</p>
+
+<source>
+&lt;Realm className="org.apache.catalina.realm.JAASRealm"                 
+                appName="MyFooRealm"       
+    userClassNames="org.foobar.realm.FooUser"       
+     roleClassNames="org.foobar.realm.FooRole" 
+                      debug="99"/&gt;
+</source>
+
+<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 5 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>&lt;Realm&gt;</code> element in <code>server.xml</code>
+              contains a <code>digest</code> attribute; JAASRealm's <code>CallbackHandler</code>
+              will digest the password prior to passing it back to the <code>LoginModule</code></li>  
+        </ul>
+
+</subsection>
+
+
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/security-manager-howto.xml b/webapps/docs/security-manager-howto.xml
new file mode 100644 (file)
index 0000000..d8eadec
--- /dev/null
@@ -0,0 +1,383 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="security-manager-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="glenn@voyager.apg.more.net">Glenn Nielsen</author>
+        <author email="jeanfrancois.arcand@sun.com">Jean-Francois Arcand</author>
+        <title>Security Manager HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Background">
+
+  <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>
+<source>
+&lt;% System.exit(1); %&gt;
+</source>
+
+  <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 5 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>
+
+</section>
+
+
+<section name="Permissions">
+
+  <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 5.</p>
+
+
+  <subsection name="Standard Permissions">
+
+    <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>
+
+  </subsection>
+
+
+  <subsection name="Tomcat Custom Permissions">
+
+    <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>
+<source>
+permission  org.apache.naming.JndiPermission  "jndi://localhost/examples/*";
+</source>
+
+    <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 permission:</p>
+<source>  
+permission java.io.FilePermission "** your application context**", "read";
+</source>  
+    <p>Where **your application context** equals the folder(or WAR file) under which 
+    your application has been deployed. </p>  
+
+  </subsection>
+
+
+</section>
+
+
+<section name="Configuring Tomcat With A SecurityManager">
+
+  <h3>Policy File Format</h3>
+
+  <p>The security policies implemented by the Java SecurityManager are
+  configured in the <code>$CATALINA_HOME/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://java.sun.com/products/jdk/1.2/docs/tooldocs/solaris/policytool.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>
+<source>
+// Example policy file entry
+
+grant [signedBy &lt;signer&gt;,] [codeBase &lt;code source&gt;] {
+  permission  &lt;class&gt;  [&lt;name&gt; [, &lt;action list&gt;]];
+};
+</source>
+
+  <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> and
+  <code>CATALINA_HOME</code> environment variables).</p>
+
+  <h3>The Default Policy File</h3>
+
+  <p>The default <code>$CATALINA_HOME/conf/catalina.policy</code> file
+  looks like this:</p>
+<source>
+// ============================================================================
+// catalina.corepolicy - Security Policy Permissions for Tomcat 5
+//
+// This file contains a default set of security policies to be enforced (by the
+// JVM) when Catalina is executed with the "-security" option.  In addition
+// to the permissions granted here, the following additional permissions are
+// granted to the codebase specific to each web application:
+//
+// * Read access to the document root directory
+//
+// $Id: security-manager-howto.xml 301460 2003-01-15 03:40:45Z glenn $
+// ============================================================================
+
+
+// ========== 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 launcher code
+grant codeBase "file:${catalina.home}/bin/commons-launcher.jar" {
+        permission java.security.AllPermission;
+};
+
+// 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 "common" directory
+grant codeBase "file:${catalina.home}/common/-" {
+        permission java.security.AllPermission;
+};
+
+// These permissions apply to the container's core code, plus any additional
+// libraries installed in the "server" directory
+grant codeBase "file:${catalina.home}/server/-" {
+        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 getting BeanInfo
+        permission java.lang.RuntimePermission "accessClassInPackage.sun.beans.*";
+
+        // Required for OpenJMX
+        permission java.lang.RuntimePermission "getAttribute";
+
+       // Allow read of JAXP compliant XML parser debug
+       permission java.util.PropertyPermission "jaxp.debug", "read";
+};
+
+
+// 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.home}/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.home}/webapps/examples/WEB-INF/classes/-" {
+// };
+//
+// The permission granted to your JDBC driver
+// grant codeBase "jar:file:${catalina.home}/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.home}/webapps/examples/WEB-INF/lib/scrape.jar!/-" {
+//      permission java.net.SocketPermission "*.noaa.gov:80", "connect";
+// };
+</source>
+
+  <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>
+<source>
+$CATALINA_HOME/bin/catalina.sh start -security    (Unix)
+%CATALINA_HOME%\bin\catalina start -security      (Windows)
+</source>
+
+</section>
+<section name="Configuring Package Protection in Tomcat">
+  <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_HOME/conf/catalina.properties</code> file
+  looks like this:</p>
+<source>  
+#
+# 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.
+</source>
+  <p>Once you have configured the <code>catalina.properties</code> file for use
+  with a SecurityManager, remember to re-start Tomcat.</p>
+</section>
+
+<section name="Troubleshooting">
+
+  <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>
+<source>
+export CATALINA_OPTS=-Djava.security.debug=all    (Unix)
+set CATALINA_OPTS=-Djava.security.debug=all       (Windows)
+</source>
+
+  <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>
+
+</section>
+
+
+</body>
+
+</document>
diff --git a/webapps/docs/setup.xml b/webapps/docs/setup.xml
new file mode 100644 (file)
index 0000000..a833b7e
--- /dev/null
@@ -0,0 +1,135 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="setup.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <title>Tomcat Setup</title>
+  </properties>
+
+<body>
+
+  <section name="Introduction">
+    <p>
+      This document introduces several ways to set up Tomcat for running
+      on different platforms.  Please note that some advanced setup issues
+      are not covered here: the full distribution (ZIP file or tarball) 
+      includes a file called
+      RUNNING.txt which discusses these issues.  We encourage you to refer
+      to it if the information below does not answer some of your questions.
+    </p>
+  </section>
+
+  <section name="Windows">
+
+    <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
+            NT/2k/XP 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 use the registry
+            or the JAVA_HOME environment variable to determine the base path
+            of a J2SE 5 JRE.
+            </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 Windows NT 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>
+
+    <p>If using a J2SE 1.4 JRE, the compatibility package must be downloaded and
+       expanded inside the folder where Tomcat was installed.</p>
+
+  </section>
+
+  <section name="Unix daemon">
+
+    <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>
+
+
+<source>
+    cd $CATALINA_HOME/bin
+    tar xvfz jsvc.tar.gz
+    cd jsvc-src
+    autoconf
+    ./configure
+    make
+    cp jsvc ..
+    cd ..
+</source>
+
+    <p>Tomcat can then be run as a daemon using the following commands.</p>
+
+<source>
+    cd $CATALINA_HOME
+    ./bin/jsvc -Djava.endorsed.dirs=./common/endorsed -cp ./bin/bootstrap.jar \
+        -outfile ./logs/catalina.out -errfile ./logs/catalina.err \
+        org.apache.catalina.startup.Bootstrap
+</source>
+
+    <p>jsvc has other useful parameters, such as <code>-user</code> which 
+       causes it to switch to another user after the daemon initialization is
+       complete. This allows, for example, running Tomcat as a non privileged
+       user while still being able to use privileged ports. 
+       <code>jsvc --help</code> will return the full jsvc usage 
+       information. In particular, the <code>-debug</code> option is useful
+       to debug issues running jsvc.</p>
+
+    <p>The file <code>$CATALINA_HOME/bin/jsvc/native/tomcat.sh</code> can be 
+       used as a template for starting Tomcat automatically at boot time from 
+       <code>/etc/init.d</code>.  The file is currently setup for running 
+       Tomcat 4.1.x, so it is necessary to edit it and change the classname 
+       from <code>BootstrapService</code> to <code>Bootstrap</code>.</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> 
+
+  </section>
+
+</body>
+</document>
diff --git a/webapps/docs/ssi-howto.xml b/webapps/docs/ssi-howto.xml
new file mode 100644 (file)
index 0000000..d60d747
--- /dev/null
@@ -0,0 +1,373 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="ssi-howto.html">
+
+&project;
+
+<properties>
+<author email="glenn@apache.org">Glenn L. Nielsen</author>
+<title>SSI How To</title>
+</properties>
+
+<body>
+
+<section name="Introduction">
+
+<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>
+</section>
+
+<section name="Installation">
+
+<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>Rename <code>$CATALINA_BASE/server/lib/servlets-ssi.renametojar</code>
+to <code>$CATALINA_BASE/server/lib/servlets-ssi.jar</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>
+
+</section>
+
+<section name="Servlet Configuration">
+
+<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? (0=false, 1=true) Default 0 (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>
+</ul>
+</p>
+
+</section>
+
+<section name="Filter Configuration">
+
+<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? (0=false, 1=true) Default 0 (false).</li>
+</ul>
+</p>
+
+</section>
+
+<section name="Directives">
+<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>&lt;!--#directive [parm=value] --&gt;</code></p>
+<p>The directives are:
+<ul>
+<li>
+<strong>config</strong> - <code>&lt;!--#config timefmt=&quot;%B %Y&quot; --&gt;</code>
+Used to set the format of dates and other items processed by SSI
+</li>
+<li>
+<strong>echo</strong> -   <code>&lt;!--#echo var=&quot;VARIABLE_NAME&quot; --&gt;</code>
+will be replaced bt the value of the variable.
+</li>
+<li>
+<strong>exec</strong> -  Used to run commands on the host system.
+</li>
+<li>
+<strong>include</strong> -  <code>&lt;!--#include virtual=&quot;file-name&quot; --&gt;</code>
+inserts the contents
+</li>
+<li>
+<strong>flastmod</strong> - <code>&lt;!--#flastmod file=&quot;filename.shtml&quot; --&gt;</code>
+Returns the time that a file was lost modified.
+</li>
+<li>
+<strong>fsize</strong> - <code>&lt;!--#fsize file=&quot;filename.shtml&quot; --&gt;</code>
+Returns the size of a file.
+</li>
+<li>
+<strong>printenv</strong> - <code>&lt;!--#printenv --&gt;</code>
+Returns the list of all the defined variables.
+</li>
+<li>
+<strong>set</strong> - <code>&lt;!--#set var="foo" value="Bar" --&gt;</code>
+is used to assign a value to a user-defind variable.
+</li>
+<li>
+<strong>if elif endif else</strong> - Used to create conditional sections. For example:</li>
+<code>&lt;!--#config timefmt="%A" --&gt;<br />
+  &lt;!--#if expr="$DATE_LOCAL = /Monday/" --&gt;<br />
+  &lt;p&gt;Meeting at 10:00 on Mondays&lt;/p&gt;<br />
+  &lt;!--#elif expr="$DATE_LOCAL = /Friday/" --&gt;<br />
+  &lt;p&gt;Turn in your time card&lt;/p&gt;<br />
+  &lt;!--#else --&gt;<br />
+  &lt;p&gt;Yoga class at noon.&lt;/p&gt;<br />
+  &lt;!--#endif --&gt;</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>
+</section>
+
+<section name="Variables">
+<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 &quot;text/html&quot;.</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: &quot;CGI/1.1&quot;.</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 laguages that the client can accept.</td>
+</tr>
+<tr>
+<td>HTTP_CONNECTION</td>
+<td>
+  The way that the connection from the client is being managed:
+  &quot;Close&quot; or &quot;Keep-Alive&quot;.</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 &quot;?&quot; in the URL.
+</td>
+</tr>
+<tr>
+<td>QUERY_STRING_UNESCAPED</td>
+<td>
+Undecoded query string with all shell metacharacters escaped 
+with &quot;\&quot;</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: &quot;GET&quot;, &quot;POST&quot; 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. &quot;HTTP/1.1&quot;.</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>
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/ssl-howto.xml b/webapps/docs/ssl-howto.xml
new file mode 100644 (file)
index 0000000..b1e917a
--- /dev/null
@@ -0,0 +1,539 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="ssl-howto.html">
+
+    &project;
+
+    <properties>
+        <author email="ccain@apache.org">Christopher Cain</author>
+        <author email="yoavs@apache.org">Yoav Shapira</author>
+        <title>SSL Configuration HOW-TO</title>
+    </properties>
+
+<body>
+
+
+<section name="Quick Start">
+
+   <p><b>IMPORTANT NOTE: This Howto refers to usage of JSSE. When using APR, Tomcat will
+   use OpenSSL, which uses a different configuration.</b></p>
+
+    <blockquote><em>
+    <p>The description below uses the variable name $CATALINA_HOME
+    to refer to the directory into which you have installed Tomcat 5,
+    and is the base directory against which most relative paths are
+    resolved.  However, if you have configured Tomcat 5 for multiple
+    instances by setting a CATALINA_BASE directory, you should use
+    $CATALINA_BASE instead of $CATALINA_HOME for each of these
+    references.</p>
+    </em></blockquote>
+
+<p>To install and configure SSL support on Tomcat 5, you need to follow
+these simple steps.  For more information, read the rest of this HOW-TO.</p>
+<ol>
+<li>If you are running a 1.3 JVM, download JSSE 1.0.3 (or later) from
+   <a href="http://java.sun.com/products/jsse/">http://java.sun.com/products/jsse/</a>
+   and either make it an <em>installed extension</em> on the system, or else
+   set an environment variable <code>JSSE_HOME</code> that points at the
+   directory into which you installed JSSE.  </li><br/><br/>
+<li>Create a certificate keystore by executing the following command:
+<p>Windows:</p>
+<source>
+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
+</source>
+<p>Unix:</p>
+<source>
+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
+</source>
+<p></p>
+    and specify a password value of "changeit".</li><br/><br/>
+<li>Uncomment the "SSL HTTP/1.1 Connector" entry in
+    <code>$CATALINA_HOME/conf/server.xml</code> and tweak as necessary.</li>
+    <br/><br/>
+</ol>
+
+
+</section>
+
+
+<section name="Introduction to SSL">
+
+<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>
+
+</section>
+
+<section name="SSL and Tomcat">
+
+<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>
+
+</section>
+
+<section name="Certificates">
+
+<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>
+
+</section>
+
+<section name="General Tips on Running SSL">
+
+<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>
+
+</section>
+
+<section name="Configuration">
+
+<subsection name="Download and Install JSSE (if needed)">
+<p>Note that JSSE is bundled with Sun's JDK 1.4 and later, so if you're using
+JDK 1.4 and later, you can skip this step.</p>
+
+
+<p>Download the <em>Java Secure Socket Extensions</em> (JSSE) package,
+version 1.0.3 or later, from
+<a href="http://java.sun.com/products/jsse/">http://java.sun.com/products/jsse/</a>.
+If you built Tomcat from source, you have probably already downloaded this
+package.</p>
+
+<p>After expanding the package, there are two ways to make it available to
+Tomcat (choose one or the other):</p>
+<ul>
+<li>Make JSSE an <em>installed extension</em> by copying all three JAR files
+    (<code>jcert.jar</code>, <code>jnet.jar</code>, and <code>jsse.jar</code>)
+    into your <code>$JAVA_HOME/jre/lib/ext</code> directory.</li>
+<li>Create a new environment variable <code>JSSE_HOME</code> that contains
+    the absolute path to the directory into which you unpacked the
+    JSSE binary distribution.</li>
+</ul>
+
+</subsection>
+
+<subsection name="Prepare the Certificate Keystore">
+
+<p>Tomcat currently operates only on <code>JKS</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.  However, 
+currently there are some limitations on the support for <code>PKCS12</code>.
+</p>
+
+<p>To import an existing certificate into a JKS keystore, please read the
+documentation (in your JDK documentation package) about <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:
+<source>openssl pkcs12 -export -in mycert.crt -inkey mykey.key \
+                        -out mycert.p12 -name tomcat -CAfile myCA.crt \
+                        -caname root -chain
+</source>
+For more advanced cases, consult the <a href="http://www.openssl.org/">OpenSSL
+documententation</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>
+<source>
+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA
+</source>
+<p>Unix:</p>
+<source>
+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA
+</source>
+
+<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>
+<source>
+%JAVA_HOME%\bin\keytool -genkey -alias tomcat -keyalg RSA \
+  -keystore \path\to\my\keystore
+</source>
+<p>Unix:</p>
+<source>
+$JAVA_HOME/bin/keytool -genkey -alias tomcat -keyalg RSA \
+  -keystore /path/to/my/keystore
+</source>
+
+<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).  You <strong>MUST</strong>
+use the same password here as was used for the keystore password itself.
+(Currently, the <code>keytool</code> prompt will tell you that pressing the
+ENTER key does this for you automatically.)</p>
+
+<p>If everything was successful, you now have a keystore file with a
+Certificate that can be used by your server.</p>
+
+<p><strong>Note:</strong> your private key password and keystore password
+should be the same.  If they differ, you will get an error along the lines
+of <code>java.io.IOException: Cannot recover key</code>, as documented in 
+<a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=38217">Bugzilla issue 38217</a>, 
+which contains further references for this issue.</p>
+
+</subsection>
+
+<subsection name="Edit the Tomcat Configuration File">
+
+<p>The final step is to configure your secure socket in the
+<code>$CATALINA_HOME/conf/server.xml</code> file, where
+<code>$CATALINA_HOME</code> represents the directory into which you
+installed Tomcat 5.  An example <code>&lt;Connector&gt;</code> element
+for an SSL connector is included in the default <code>server.xml</code>
+file installed with Tomcat.  It will look something like this:</p>
+<source>
+&lt;-- Define a SSL Coyote HTTP/1.1 Connector on port 8443 --&gt;
+&lt;!--
+&lt;Connector 
+           port="8443" minProcessors="5" maxProcessors="75"
+           enableLookups="true" disableUploadTimeout="true"
+           acceptCount="100" debug="0" scheme="https" secure="true";
+           clientAuth="false" sslProtocol="TLS"/&gt;
+--&gt;
+</source>
+
+<p>You will note that the Connector element itself is commented out by default,
+so you will need to remove the comment tags around it.  Then, you can
+customize the specified attributes as necessary.  For detailed information
+about the various options, consult the
+<a href="config/index.html">Server Configuration Reference</a>.  The
+following discussion covers only those attributes of most interest when
+setting up SSL communication.</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 2.4 Specification.</p>
+  </em></blockquote>
+
+<p>There are addional option used to configure the SSL protocol.
+  You may need to add or change the following attribute
+values, depending on how you configured your keystore earlier:</p>
+
+<table border="1">
+  <tr>
+    <th>Attribute</th>
+    <th>Description</th>
+  </tr>
+  <tr>
+    <td><code>clientAuth</code></td>
+    <td>Set this value to <code>true</code> if you want Tomcat to require
+        all SSL clients to present a client Certificate in order to use
+        this socket.  Set this value to <code>want</code> if you want Tomcat
+        to request a client Certificate, but not fail if one isn't presented.
+    </td>
+  </tr>
+  <tr>
+    <td><code>keystoreFile</code></td>
+    <td>Add this attribute if the keystore file you created is not in
+        the default place that Tomcat expects (a file named
+        <code>.keystore</code> in the user home directory under
+        which Tomcat is running).  You can specify an absolute pathname,
+        or a relative pathname that is resolved against the
+        <code>$CATALINA_BASE</code> environment variable.</td>
+  </tr>
+  <tr>
+    <td><code>keystorePass</code></td>
+    <td>Add this element if you used a different keystore (and Certificate)
+        password than the one Tomcat expects (<code>changeit</code>).</td>
+  </tr>
+  <tr>
+    <td><code>keystoreType</code></td>
+    <td>Add this element if using a PKCS12 keystore.  The valid values are
+        <code>JKS</code> and <code>PKCS12</code>.</td>
+  </tr>
+  <tr>
+    <td><code>sslProtocol</code></td>
+    <td>The encryption/decryption protocol to be used on this socket.
+        It is not recommended to change this value if you are using Sun's
+        JVM.  It is reported that IBM's 1.4.1 implementation
+        of the TLS protocol is not compatible with some popular browsers.
+        In this case, use the value <code>SSL</code>.</td>
+  </tr>
+  <tr>
+    <td><code>ciphers</code></td>
+    <td>The comma separated list of encryption ciphers that this socket is 
+        allowed to use.  By default, any available cipher is allowed.</td>
+  </tr>
+  <tr>
+    <td><code>algorithm</code></td>
+    <td>The <code>X509</code> algorithm to use.  This defaults to the Sun 
+        implementation (<code>SunX509</code>).  For IBM JVMs you should use
+        the value <code>IbmX509</code>.  For other vendors, consult the JVM
+        documentation for the correct value.
+    </td>
+  </tr>
+  <tr>
+   <td><code>truststoreFile</code></td>
+   <td>The TrustStore file to use to validate client certificates.</td>
+  </tr>
+  <tr>
+   <td><code>truststorePass</code></td>
+   <td>The password to access the TrustStore.  This defaults to the value
+       of <code>keystorePass</code>.</td>
+  </tr>
+  <tr>
+   <td><code>truststoreType</code></td>
+    <td>Add this element if your are using a different format for the 
+        TrustStore then you are using for the KeyStore.  The valid values are
+        <code>JKS</code> and <code>PKCS12</code>.</td>
+  </tr>
+</table>
+
+<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>
+<source>
+https://localhost:8443
+</source>
+
+<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>
+
+</subsection>
+
+</section>
+
+<section name="Installing a Certificate from a Certificate Authority">
+<p>To obstain and install a Certificate from a Certificate Authority (like verisign.com, thawte.com 
+or trustcenter.de) you should have read the previous section and then follow these instructions:</p>
+
+<subsection name="Create a local Certificate Signing Request (CSR)">
+<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):
+       <source>keytool -genkey -alias tomcat -keyalg RSA \
+       -keystore &lt;your_keystore_filename&gt;</source>
+       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:
+       <source>keytool -certreq -keyalg RSA -alias tomcat -file certreq.csr \
+       -keystore &lt;your_keystore_filename&gt;</source>
+</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>
+</subsection>
+
+<subsection name="Importing the Certificate">
+<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 procede 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
+       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 you keystore
+    <source>keytool -import -alias root -keystore &lt;your_keystore_filename&gt; \
+       -trustcacerts -file &lt;filename_of_the_chain_certificate&gt;</source>
+</li>
+<li>And finally import your new Certificate
+       <source>keytool -import -alias tomcat -keystore &lt;your_keystore_filename&gt; \
+       -trustcacerts -file &lt;your_certificate_filename&gt;</source>
+</li>
+</ul>
+</subsection>
+</section>
+
+<section name="Troubleshooting">
+
+<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>I get "java.security.NoSuchAlgorithmException" errors in my
+    log files.
+    <blockquote>
+    <p>The JVM cannot find the JSSE JAR files.  Follow all of the directions to
+    <a href="#Download and Install JSSE">download and install JSSE</a>.</p>
+    </blockquote></li>
+
+<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>&lt;Factory&gt;</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>&lt;Connector&gt;</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>
+
+</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://jakarta.apache.org/site/mail.html">http://jakarta.apache.org/site/mail.html"</a>.</p>
+
+</section>
+
+<section name="Miscellaneous Tips and Bits">
+
+<p>To access the SSL session ID from the request, use:<br />
+
+  <code>
+    String sslID = (String)request.getAttribute("javax.servlet.request.ssl_session");
+  </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>
+</section>
+
+</body>
+
+</document>
diff --git a/webapps/docs/status.xml b/webapps/docs/status.xml
new file mode 100644 (file)
index 0000000..fb5973d
--- /dev/null
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="status.html">
+
+  &project;
+
+  <properties>
+    <author email="remm@apache.org">Remy Maucherat</author>
+    <author email="yoavs@apache.org">Yoav Shapira</author>
+    <title>Project Status</title>
+  </properties>
+
+<body>
+  <section name="Preface">
+    <p>
+      This document attempts to convey the current status of Tomcat development
+      in "big picture" terms.  This is not the place to check if an individual
+      bug report has been addressed or when an individual feature will be available.
+    </p>
+    <p>
+      This page is updated roughly once per every couple of Tomcat minor releases,
+      so for day-to-day status you should check the tomcat-user and tomcat-dev mailing
+      lists.  You can always inquire there as to the availability or status of a
+      specific feature or component.
+    </p>
+  </section>
+
+  <section name="Current Status Summary">
+    <p>
+      <b>Tomcat 5.0.27</b> was released on June 17th, 2004.  At that time, the TOMCAT_5_0
+      branch was tagged in CVS, and work on Tomcat 5.5 began.  We have now had several
+      Tomcat 5.5 releases, including a couple of stable ones.  Accordingly, Tomcat 5.5
+      is now the focus on work.  Tomcat 5.0 is in maintenance mode and its releases
+      will become less and less frequent.
+    </p>
+    <p>
+      <b>Tomcat 5.5</b> has several major goals.  They are discussed in the tomcat-dev
+      mailing list's "5.next" thread: 
+      <a href="http://marc.theaimsgroup.com/?l=tomcat-dev&amp;w=2&amp;r=1&amp;s=5.next&amp;q=b">MARC</a>.
+      The status of some of these items is detailed below.  Once 5.5 releases are
+      available, please refer to the Changelog accompanying each release for detailed
+      changes, enhancements, and fixes.
+    </p>
+    <p>
+      <b>Tomcat 4.1.x</b> is no longer actively developed.  It is maintained to address
+      only showstopper, security, and Servlet Specification compliance issues.  Maintenance
+      for Tomcat 4.1.x will likely cease once a stable release or two of Tomcat 5.5 are out.
+      Users of Tomcat 4.1.x are strongly encouraged to upgrade to the latest stable Tomcat
+      5.0 release.
+    </p>
+    <p>
+      <b>Tomcat 4.0.x</b> is relatively old, and not actively maintained or supported.
+      It is strongly recommended that users of these releases upgrade to the latest
+      stable Tomcat 5.0 release or at least the latest stable Tomcat 4.1 release.
+    </p>
+    <p>
+      <b>Tomcat 3.3.x</b> is in roughly the same maintenance mode as Tomcat 4.1.x.
+    </p>
+    <p>
+      <b>Tomcat 3.2</b> and earlier are in roughly the same support state as Tomcat 4.0.x.
+      Users should upgrade to Tomcat 3.3.x or the latest stable Tomcat 5.0.x.
+    </p>
+  </section>
+
+  <section name="How to read the report">
+    
+    <p>
+      The columns in this report contain the following information:
+    <ul>
+      <li><b>Priority</b> - A sense of how important it is to address this 
+        issue in the short term.</li>
+      <li><b>Action Item</b> - Concise description of the action item
+        to be completed.  Where relevant, Java package names of the
+        primary classes involved are listed in [square brackets]</li>
+      <li><b>Volunteers</b> - Login of those developers who
+        have volunteered to assist in the design, implementation, testing, and
+        documentation of this action item's changes to Tomcat.</li>
+    </ul>
+      Developers can nominate
+      themselves to work on particular action items by asking a Committer to 
+      add their name address to those items.  The developers 
+      working on each item should discuss and agree upon the approach to be 
+      used for implementing the item's changes to the project source code 
+      and documentation, prior to completing those changes.  Such discussions 
+      should take place on the tomcat-dev mailing list so that everyone can 
+      stay apprised of what is going on, or chime in if they want to 
+      contribute ideas and suggestions.
+    </p>
+    
+  </section>
+
+  <section name="TODO List">
+
+    <status>
+      <item priority="High" owner="costin">
+        Refactor ClassLoaders for Tomcat 5.5 to allow container plugins.
+      </item>
+      <item priority="Medium" owner="fhanik">
+        Enhance Cluster functionality for Tomcat 5.5.
+      </item>
+      <item priority="Medium" owner="everyone">
+        Continue fixing bugs and updating docs.
+      </item>
+    </status>
+
+  </section>
+
+  <section name="Open bugs">
+    
+    <p>
+      The list of the bugs which are in an unresolved state for Tomcat 5 can be
+      seen 
+      <a href="http://issues.apache.org/bugzilla/buglist.cgi?bug_status=UNCONFIRMED&amp;bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;bug_status=RESOLVED&amp;resolution=LATER&amp;resolution=REMIND&amp;resolution=---&amp;bugidtype=include&amp;product=Tomcat+5&amp;cmdtype=doit&amp;order=Importance">here</a>.
+      Aspiring volunteers and others are strongly encouraged to attempt 
+      to comment and help resolve these issues.
+    </p>
+    
+  </section>
+
+</body>
+</document>
diff --git a/webapps/docs/tomcat-docs.xsl b/webapps/docs/tomcat-docs.xsl
new file mode 100644 (file)
index 0000000..98fb060
--- /dev/null
@@ -0,0 +1,436 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!-- Content Stylesheet for "tomcat-docs" Documentation -->
+
+<!-- $Id: tomcat-docs.xsl 377243 2006-02-12 21:26:03Z markt $ -->
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0">
+
+
+  <!-- Output method -->
+  <xsl:output method="html"
+            encoding="iso-8859-1"
+              indent="no"/>
+
+
+  <!-- Defined parameters (overrideable) -->
+  <xsl:param    name="home-name"        select="'The Tomcat Project'"/>
+  <xsl:param    name="home-href"        select="'http://tomcat.apache.org/'"/>
+  <xsl:param    name="home-logo"        select="'/images/tomcat.gif'"/>
+  <xsl:param    name="printer-logo"     select="'/images/printer.gif'"/>
+  <xsl:param    name="apache-logo"      select="'/images/asf-logo.gif'"/>
+  <xsl:param    name="relative-path"    select="'.'"/>
+  <xsl:param    name="void-image"       select="'/images/void.gif'"/>
+  <xsl:param    name="project-menu"     select="'menu'"/>
+  <xsl:param    name="standalone"       select="''"/>
+  <xsl:param    name="buglink"          select="'http://issues.apache.org/bugzilla/show_bug.cgi?id='"/>
+
+  <!-- Defined variables (non-overrideable) -->
+  <xsl:variable name="body-bg"          select="'#ffffff'"/>
+  <xsl:variable name="body-fg"          select="'#000000'"/>
+  <xsl:variable name="body-link"        select="'#525D76'"/>
+  <xsl:variable name="banner-bg"        select="'#525D76'"/>
+  <xsl:variable name="banner-fg"        select="'#ffffff'"/>
+  <xsl:variable name="sub-banner-bg"    select="'#828DA6'"/>
+  <xsl:variable name="sub-banner-fg"    select="'#ffffff'"/>
+  <xsl:variable name="source-color"     select="'#023264'"/>
+  <xsl:variable name="attributes-color" select="'#023264'"/>
+  <xsl:variable name="table-th-bg"      select="'#039acc'"/>
+  <xsl:variable name="table-td-bg"      select="'#a0ddf0'"/>
+
+  <!-- Process an entire document into an HTML page -->
+  <xsl:template match="document">
+  <xsl:variable name="project"
+              select="document('project.xml')/project"/>
+    <html>
+    <head>
+    <title><xsl:value-of select="project/title"/> - <xsl:value-of select="properties/title"/></title>
+    <xsl:for-each select="properties/author">
+      <xsl:variable name="name">
+        <xsl:value-of select="."/>
+      </xsl:variable>
+      <xsl:variable name="email">
+        <xsl:value-of select="@email"/>
+      </xsl:variable>
+      <meta name="author" value="{$name}"/>
+      <meta name="email" value="{$email}"/>
+    </xsl:for-each>
+    </head>
+
+    <body bgcolor="{$body-bg}" text="{$body-fg}" link="{$body-link}"
+          alink="{$body-link}" vlink="{$body-link}">
+
+    <table border="0" width="100%" cellspacing="0">
+
+      <xsl:comment>PAGE HEADER</xsl:comment>
+      <tr>
+        <td>
+        <xsl:if test="project/logo">
+          <xsl:variable name="alt">
+            <xsl:value-of select="project/logo"/>
+          </xsl:variable>
+          <xsl:variable name="home">
+            <xsl:value-of select="project/@href"/>
+          </xsl:variable>
+          <xsl:variable name="src">
+            <xsl:value-of select="$relative-path"/><xsl:value-of select="project/logo/@href"/>
+          </xsl:variable>
+
+          <xsl:comment>PROJECT LOGO</xsl:comment>
+          <a href="{$home}">
+            <img src="{$src}" align="right" alt="{$alt}" border="0"/>
+          </a>
+        </xsl:if>
+        </td>
+        <td>
+          <font face="arial,helvetica,sanserif">
+            <h1><xsl:value-of select="$project/title"/></h1>
+          </font>
+        </td>
+        <td>
+          <xsl:comment>APACHE LOGO</xsl:comment>
+          <xsl:variable name="src">
+            <xsl:value-of select="$relative-path"/><xsl:value-of select="$apache-logo"/>
+          </xsl:variable>
+          <a href="http://www.apache.org/">
+            <img src="{$src}" align="right" alt="Apache Logo" border="0"/>
+          </a>
+        </td>
+      </tr>
+    </table>
+
+    <table border="0" width="100%" cellspacing="4">
+
+      <xsl:comment>HEADER SEPARATOR</xsl:comment>
+      <tr>
+        <td colspan="2">
+          <hr noshade="noshade" size="1"/>
+        </td>
+      </tr>
+
+      <tr>
+
+        <!-- Don't generate a menu if styling printer friendly docs -->
+        <xsl:if test="$project-menu = 'menu'">
+          <xsl:comment>LEFT SIDE NAVIGATION</xsl:comment>
+          <td width="20%" valign="top" nowrap="true">
+            <xsl:apply-templates select="project/body/menu"/>
+          </td>
+        </xsl:if>
+
+        <xsl:comment>RIGHT SIDE MAIN BODY</xsl:comment>
+        <td width="80%" valign="top" align="left">
+          <table border="0" width="100%" cellspacing="4">
+            <tr>
+              <td align="left" valign="top">
+                <h1><xsl:value-of select="project/title"/></h1>
+                <h2><xsl:value-of select="properties/title"/></h2>
+              </td>
+              <td align="right" valign="top" nowrap="true">
+                <!-- Add the printer friendly link for docs with a menu -->
+                <xsl:if test="$project-menu = 'menu'">
+                  <xsl:variable name="src">
+                    <xsl:value-of select="$relative-path"/><xsl:value-of select="$printer-logo"/>
+                  </xsl:variable>
+                  <xsl:variable name="url">
+                    <xsl:value-of select="/document/@url"/>
+                  </xsl:variable>
+                  <small>
+                    <a href="printer/{$url}">
+                      <img src="{$src}" border="0" alt="Printer Friendly Version"/>
+                      <br />print-friendly<br />version
+                    </a>
+                  </small>
+                </xsl:if>
+                <xsl:if test="$project-menu != 'menu'">
+                  <xsl:variable name="void">
+                    <xsl:value-of select="$relative-path"/><xsl:value-of select="$void-image"/>
+                    </xsl:variable>
+                  <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+                </xsl:if>
+              </td>
+            </tr>
+          </table>
+          <xsl:apply-templates select="body/section"/>
+        </td>
+
+      </tr>
+
+      <xsl:comment>FOOTER SEPARATOR</xsl:comment>
+      <tr>
+        <td colspan="2">
+          <hr noshade="noshade" size="1"/>
+        </td>
+      </tr>
+
+      <xsl:comment>PAGE FOOTER</xsl:comment>
+      <tr><td colspan="2">
+        <div align="center"><font color="{$body-link}" size="-1"><em>
+        Copyright &#169; 1999-2006, Apache Software Foundation
+        </em></font></div>
+      </td></tr>
+
+    </table>
+    </body>
+    </html>
+
+  </xsl:template>
+
+
+  <!-- Process a menu for the navigation bar -->
+  <xsl:template match="menu">
+    <p><strong><xsl:value-of select="@name"/></strong></p>
+    <ul>
+      <xsl:apply-templates select="item"/>
+    </ul>
+  </xsl:template>
+
+
+  <!-- Process a menu item for the navigation bar -->
+  <xsl:template match="item">
+    <xsl:variable name="href">
+      <xsl:value-of select="@href"/>
+    </xsl:variable>
+    <li><a href="{$href}"><xsl:value-of select="@name"/></a></li>
+  </xsl:template>
+
+
+  <!-- Process a documentation section -->
+  <xsl:template match="section">
+    <xsl:variable name="name">
+      <xsl:value-of select="@name"/>
+    </xsl:variable>
+    <table border="0" cellspacing="0" cellpadding="2">
+      <!-- Section heading -->
+      <tr><td bgcolor="{$banner-bg}">
+          <font color="{$banner-fg}" face="arial,helvetica.sanserif">
+          <a name="{$name}">
+          <strong><xsl:value-of select="@name"/></strong></a></font>
+      </td></tr>
+      <!-- Section body -->
+      <tr><td><blockquote>
+        <xsl:apply-templates/>
+      </blockquote></td></tr>
+    </table>
+  </xsl:template>
+
+
+  <!-- Process a documentation subsection -->
+  <xsl:template match="subsection">
+    <xsl:variable name="name">
+      <xsl:value-of select="@name"/>
+    </xsl:variable>
+    <table border="0" cellspacing="0" cellpadding="2">
+      <!-- Subsection heading -->
+      <tr><td bgcolor="{$sub-banner-bg}">
+          <font color="{$sub-banner-fg}" face="arial,helvetica.sanserif">
+          <a name="{$name}">
+          <strong><xsl:value-of select="@name"/></strong></a></font>
+      </td></tr>
+      <!-- Subsection body -->
+      <tr><td><blockquote>
+        <xsl:apply-templates/>
+      </blockquote></td></tr>
+    </table>
+  </xsl:template>
+
+
+  <!-- Process a source code example -->
+  <xsl:template match="source">
+    <xsl:variable name="void">
+      <xsl:value-of select="$relative-path"/><xsl:value-of select="$void-image"/>
+    </xsl:variable>
+    <div align="left">
+      <table cellspacing="4" cellpadding="0" border="0">
+        <tr>
+          <td bgcolor="{$source-color}" width="1" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+          <td bgcolor="{$source-color}" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+          <td bgcolor="{$source-color}" width="1" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+        </tr>
+        <tr>
+          <td bgcolor="{$source-color}" width="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+          <td bgcolor="#ffffff" height="1"><pre>
+            <xsl:value-of select="."/>
+          </pre></td>
+          <td bgcolor="{$source-color}" width="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+        </tr>
+        <tr>
+          <td bgcolor="{$source-color}" width="1" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+          <td bgcolor="{$source-color}" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+          <td bgcolor="{$source-color}" width="1" height="1">
+            <img src="{$void}" width="1" height="1" vspace="0" hspace="0" border="0"/>
+          </td>
+        </tr>
+      </table>
+    </div>
+  </xsl:template>
+
+
+  <!-- Process an attributes list with nested attribute elements -->
+  <xsl:template match="attributes">
+    <table border="1" cellpadding="5">
+      <tr>
+        <th width="15%" bgcolor="{$attributes-color}">
+          <font color="#ffffff">Attribute</font>
+        </th>
+        <th width="85%" bgcolor="{$attributes-color}">
+          <font color="#ffffff">Description</font>
+        </th>
+      </tr>
+      <xsl:for-each select="attribute">
+        <tr>
+          <td align="left" valign="center">
+            <xsl:if test="@required = 'true'">
+              <strong><code><xsl:value-of select="@name"/></code></strong>
+            </xsl:if>
+            <xsl:if test="@required != 'true'">
+              <code><xsl:value-of select="@name"/></code>
+            </xsl:if>
+          </td>
+          <td align="left" valign="center">
+            <xsl:apply-templates/>
+          </td>
+        </tr>
+      </xsl:for-each>
+    </table>
+  </xsl:template>
+
+  <!-- Fix relative links in printer friendly versions of the docs -->
+  <xsl:template match="a">
+    <xsl:variable name="href" select="@href"/>
+    <xsl:choose>
+      <xsl:when test="$standalone = 'standalone'">
+        <xsl:apply-templates/>
+      </xsl:when>
+      <xsl:when test="$project-menu != 'menu' and starts-with(@href,'../')">
+        <a href="../{$href}"><xsl:apply-templates/></a>
+      </xsl:when>
+      <xsl:when test="$project-menu != 'menu' and starts-with(@href,'./') and contains(substring(@href,3),'/')">
+        <a href=".{$href}"><xsl:apply-templates/></a>
+      </xsl:when>
+      <xsl:when test="$project-menu != 'menu' and not(contains(@href,'//')) and not(starts-with(@href,'/')) and not(starts-with(@href,'#')) and contains(@href,'/')">
+        <a href="../{$href}"><xsl:apply-templates/></a>
+      </xsl:when>
+      <xsl:when test="$href != ''">
+        <a href="{$href}"><xsl:apply-templates/></a>
+      </xsl:when>
+      <xsl:otherwise>
+        <xsl:variable name="name" select="@name"/>
+        <a name="{$name}"><xsl:apply-templates/></a>
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:template>
+
+  <!-- Changelog related tags -->
+  <xsl:template match="changelog">
+    <table border="0" cellpadding="2" cellspacing="2">
+      <xsl:apply-templates/>
+    </table>
+  </xsl:template>
+
+  <xsl:template match="changelog/add">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/add.gif</xsl:variable>
+      <td><img alt="add" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="changelog/update">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/update.gif</xsl:variable>
+      <td><img alt="update" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="changelog/design">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/design.gif</xsl:variable>
+      <td><img alt="design" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="changelog/docs">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/docs.gif</xsl:variable>
+      <td><img alt="docs" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="changelog/fix">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/fix.gif</xsl:variable>
+      <td><img alt="fix" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <xsl:template match="changelog/scode">
+    <tr>
+      <xsl:variable name="src"><xsl:value-of select="$relative-path"/>/images/code.gif</xsl:variable>
+      <td><img alt="code" class="icon" src="{$src}"/></td>
+      <td><xsl:apply-templates/></td>
+    </tr>
+  </xsl:template>
+
+  <!-- Process an attributes list with nested attribute elements -->
+  <xsl:template match="status">
+    <table border="1" cellpadding="5">
+      <tr>
+        <th width="15%" bgcolor="{$attributes-color}">
+          <font color="#ffffff">Priority</font>
+        </th>
+        <th width="50%" bgcolor="{$attributes-color}">
+          <font color="#ffffff">Action Item</font>
+        </th>
+        <th width="25%" bgcolor="{$attributes-color}">
+          <font color="#ffffff">Volunteers</font>
+        </th>
+        <xsl:for-each select="item">
+        <tr>
+          <td align="left" valign="center">
+            <xsl:value-of select="@priority"/>
+          </td>
+          <td align="left" valign="center">
+            <xsl:apply-templates/>
+          </td>
+          <td align="left" valign="center">
+            <xsl:value-of select="@owner"/>
+          </td>
+        </tr>
+        </xsl:for-each>
+      </tr>
+    </table>
+  </xsl:template>
+
+  <!-- Link to a bug report -->
+  <xsl:template match="bug">
+      <xsl:variable name="link"><xsl:value-of select="$buglink"/><xsl:value-of select="text()"/></xsl:variable>
+      <a href="{$link}"><xsl:apply-templates/></a>
+  </xsl:template>
+
+  <!-- Process everything else by just passing it through -->
+  <xsl:template match="*|@*">
+    <xsl:copy>
+      <xsl:apply-templates select="@*|*|text()"/>
+    </xsl:copy>
+  </xsl:template>
+
+</xsl:stylesheet>
diff --git a/webapps/docs/windows-service-howto.xml b/webapps/docs/windows-service-howto.xml
new file mode 100644 (file)
index 0000000..82bf048
--- /dev/null
@@ -0,0 +1,352 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="windows-service-howto.html">
+
+    &project;
+
+    <properties>
+      <author email="mturk@apache.org">Mladen Turk</author>
+      <title>Windows service HOW-TO</title>
+    </properties>
+
+<body>
+<section name="NOTICE">
+<p>
+    <b>This section of the documentation applies to procrun 1.0, and is now obsolete.</b>
+</p>
+</section>
+<section name="Tomcat5 service application">
+<p>
+    <b>Tomcat5</b> is a service application for running Tomcat5 as NT service.
+</p>
+</section>
+<section name="Tomcat5w monitor application">
+<p>
+    <b>Tomcat5w</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 try</td>
+    </tr>
+    </table>
+</p>
+</section>
+<section name="Command line arguments">
+<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 sufix, meaning Tomcat5</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> 
+</section>
+<section name="Command line parameters">
+<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:
+<source>set PR_CLASSPATH=xx.jar</source>
+</p>    
+<p>is equivalent to providing
+<source>--Classpath=xx.jar</source>
+</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</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 then 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> 
+</section>
+<section name="Installing services">
+<p>
+The safest way to manually install the service is to use the provided <b>service.bat</b> script.
+</p>
+<p>
+<source>
+Install the service named 'Tomcat5'
+C:\> service.bat install
+</source>
+</p>
+<p>
+If using tomcat5.exe, you need to use the <b>//IS//</b> parameter.
+</p>
+<p>
+<source>
+Install the service named 'Tomcat5'
+C:\> tomcat5 //IS//Tomcat5 --DisplayName="Apache Tomcat 5" \
+C:\> --Install="C:\Program Files\Tomcat\bin\tomcat5.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
+</source>
+</p>
+</section>
+<section name="Updating services">
+<p>
+To update the service parameters, you need to use the <b>//US//</b> parameter.
+</p>
+<p>
+<source>
+Update the service named 'Tomcat5
+C:\> tomcat5 //US//Tomcat5 --Description="Apache Tomcat Server - http://jakarta.apache.org/tomcat " \
+C:\> --Startup=auto --Classpath=%JAVA_HOME%\lib\tools.jar;%CATALINA_HOME%\bin\bootstrap.jar
+</source>
+</p>
+</section>
+<section name="Removing services">
+<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>
+<source>
+Remove the service named 'Tomcat5'
+C:\> tomcat5 //DS//Tomcat5
+</source>
+</p>
+</section>
+<section name="Debugging services">
+<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 tomcat5.exe to testservice.exe then you can just execute the
+testservice.exe and this command mode will be executed by default.
+</p>
+<p>
+<source>
+Run the service named 'Tomcat5' in console mode
+C:\> tomcat5 //TS//Tomcat5 [additional arguments]
+Or simply execute:
+C:\> tomcat5
+</source>
+</p>
+</section>
+</body>
+</document> 
diff --git a/webapps/host-manager/WEB-INF/web.xml b/webapps/host-manager/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..6de1fc5
--- /dev/null
@@ -0,0 +1,95 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+
+<!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>
+
+  <display-name>Tomcat Manager Application</display-name>
+  <description>
+    A scriptable management web application for the Tomcat Web Server;
+       Manager lets you view, load/unload/etc particular web applications.
+  </description>
+
+  <!-- Define the Manager Servlet
+       Change servlet-class to: org.apache.catalina.servlets.HTMLManagerServlet
+       to get a Servlet with a more intuitive HTML interface, don't change if you
+       have software that is expected to parse the output from ManagerServlet
+       since they're not compatible.
+   -->
+  <servlet>
+    <servlet-name>HostManager</servlet-name>
+    <servlet-class>org.apache.catalina.manager.host.HostManagerServlet</servlet-class>
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>2</param-value>
+    </init-param>
+  </servlet>
+  <servlet>
+    <servlet-name>HTMLHostManager</servlet-name>
+    <servlet-class>org.apache.catalina.manager.host.HTMLHostManagerServlet</servlet-class>
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>2</param-value>
+    </init-param>
+  </servlet>
+
+  <!-- Define the Manager Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>HostManager</servlet-name>
+    <url-pattern>/list</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HostManager</servlet-name>
+    <url-pattern>/add</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HostManager</servlet-name>
+    <url-pattern>/remove</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HostManager</servlet-name>
+    <url-pattern>/start</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HostManager</servlet-name>
+    <url-pattern>/stop</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HTMLHostManager</servlet-name>
+    <url-pattern>/html/*</url-pattern>
+  </servlet-mapping>
+
+  <!-- Define a Security Constraint on this Application -->
+  <security-constraint>
+    <web-resource-collection>
+      <web-resource-name>HTMLHostManager and HostManager commands</web-resource-name>
+      <url-pattern>/html/*</url-pattern>
+      <url-pattern>/list</url-pattern>
+      <url-pattern>/add</url-pattern>
+      <url-pattern>/remove</url-pattern>
+      <url-pattern>/start</url-pattern>
+      <url-pattern>/stop</url-pattern>
+    </web-resource-collection>
+    <auth-constraint>
+       <!-- NOTE:  This role is not present in the default users file -->
+       <role-name>admin</role-name>
+    </auth-constraint>
+  </security-constraint>
+
+  <!-- Define the Login Configuration for this Application -->
+  <login-config>
+    <auth-method>BASIC</auth-method>
+    <realm-name>Tomcat Host Manager Application</realm-name>
+  </login-config>
+
+  <!-- Security roles referenced by this web application -->
+  <security-role>
+    <description>
+      The role that is required to log in to the Manager Application
+    </description>
+    <role-name>admin</role-name>
+  </security-role>
+
+</web-app>
diff --git a/webapps/host-manager/host-manager.xml b/webapps/host-manager/host-manager.xml
new file mode 100644 (file)
index 0000000..729e64b
--- /dev/null
@@ -0,0 +1,13 @@
+<!--
+
+    Context configuration file for the Tomcat Host Manager Web App
+
+    $Id: host-manager.xml 303743 2005-03-11 22:39:26Z remm $
+
+-->
+
+
+<Context docBase="${catalina.home}/server/webapps/host-manager"
+         privileged="true" antiResourceLocking="false" antiJARLocking="false">
+
+</Context>
diff --git a/webapps/host-manager/images/add.gif b/webapps/host-manager/images/add.gif
new file mode 100644 (file)
index 0000000..0774d07
Binary files /dev/null and b/webapps/host-manager/images/add.gif differ
diff --git a/webapps/host-manager/images/asf-logo.gif b/webapps/host-manager/images/asf-logo.gif
new file mode 100644 (file)
index 0000000..22eb9d7
Binary files /dev/null and b/webapps/host-manager/images/asf-logo.gif differ
diff --git a/webapps/host-manager/images/code.gif b/webapps/host-manager/images/code.gif
new file mode 100644 (file)
index 0000000..d27307b
Binary files /dev/null and b/webapps/host-manager/images/code.gif differ
diff --git a/webapps/host-manager/images/design.gif b/webapps/host-manager/images/design.gif
new file mode 100644 (file)
index 0000000..f5db0a9
Binary files /dev/null and b/webapps/host-manager/images/design.gif differ
diff --git a/webapps/host-manager/images/docs.gif b/webapps/host-manager/images/docs.gif
new file mode 100644 (file)
index 0000000..d64a4a1
Binary files /dev/null and b/webapps/host-manager/images/docs.gif differ
diff --git a/webapps/host-manager/images/fix.gif b/webapps/host-manager/images/fix.gif
new file mode 100644 (file)
index 0000000..d59ad64
Binary files /dev/null and b/webapps/host-manager/images/fix.gif differ
diff --git a/webapps/host-manager/images/tomcat.gif b/webapps/host-manager/images/tomcat.gif
new file mode 100644 (file)
index 0000000..6175673
Binary files /dev/null and b/webapps/host-manager/images/tomcat.gif differ
diff --git a/webapps/host-manager/images/update.gif b/webapps/host-manager/images/update.gif
new file mode 100644 (file)
index 0000000..31e22ab
Binary files /dev/null and b/webapps/host-manager/images/update.gif differ
diff --git a/webapps/host-manager/images/void.gif b/webapps/host-manager/images/void.gif
new file mode 100644 (file)
index 0000000..e565824
Binary files /dev/null and b/webapps/host-manager/images/void.gif differ
diff --git a/webapps/host-manager/manager.xml b/webapps/host-manager/manager.xml
new file mode 100644 (file)
index 0000000..fb4d32f
--- /dev/null
@@ -0,0 +1,13 @@
+<!--
+
+    Context configuration file for the Tomcat Manager Web App
+
+    $Id: manager.xml 303743 2005-03-11 22:39:26Z remm $
+
+-->
+
+
+<Context docBase="${catalina.home}/server/webapps/manager"
+         privileged="true" antiResourceLocking="false" antiJARLocking="false">
+
+</Context>
diff --git a/webapps/manager/WEB-INF/web.xml b/webapps/manager/WEB-INF/web.xml
new file mode 100644 (file)
index 0000000..95af36e
--- /dev/null
@@ -0,0 +1,186 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<!--
+  Copyright 2004 The Apache Software Foundation
+
+  Licensed 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>Tomcat Manager Application</display-name>
+  <description>
+    A scriptable management web application for the Tomcat Web Server;
+       Manager lets you view, load/unload/etc particular web applications.
+  </description>
+
+  <!-- Define the Manager Servlet
+       Change servlet-class to: org.apache.catalina.servlets.HTMLManagerServlet
+       to get a Servlet with a more intuitive HTML interface, don't change if you
+       have software that is expected to parse the output from ManagerServlet
+       since they're not compatible.
+   -->
+  <servlet>
+    <servlet-name>Manager</servlet-name>
+    <servlet-class>org.apache.catalina.manager.ManagerServlet</servlet-class>
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>2</param-value>
+    </init-param>
+  </servlet>
+  <servlet>
+    <servlet-name>HTMLManager</servlet-name>
+    <servlet-class>org.apache.catalina.manager.HTMLManagerServlet</servlet-class>
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>2</param-value>
+    </init-param>
+  </servlet>
+  <servlet>
+    <servlet-name>Status</servlet-name>
+    <servlet-class>org.apache.catalina.manager.StatusManagerServlet</servlet-class>
+    <init-param>
+      <param-name>debug</param-name>
+      <param-value>0</param-value>
+    </init-param>
+  </servlet>
+
+  <servlet>
+    <servlet-name>JMXProxy</servlet-name>
+    <servlet-class>org.apache.catalina.manager.JMXProxyServlet</servlet-class>
+  </servlet>
+
+  <!-- Define the Manager Servlet Mapping -->
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/list</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/sessions</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/start</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/stop</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/install</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/remove</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/deploy</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/undeploy</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/reload</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/save</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/serverinfo</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/roles</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Manager</servlet-name>
+      <url-pattern>/resources</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>Status</servlet-name>
+    <url-pattern>/status/*</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>JMXProxy</servlet-name>
+      <url-pattern>/jmxproxy/*</url-pattern>
+  </servlet-mapping>
+  <servlet-mapping>
+    <servlet-name>HTMLManager</servlet-name>
+    <url-pattern>/html/*</url-pattern>
+  </servlet-mapping>
+
+  <!-- Define reference to the user database for looking up roles -->
+  <resource-env-ref>
+    <description>
+      Link to the UserDatabase instance from which we request lists of
+      defined role names.  Typically, this will be connected to the global
+      user database with a ResourceLink element in server.xml or the context
+      configuration file for the Manager web application.
+    </description>
+    <resource-env-ref-name>users</resource-env-ref-name>
+    <resource-env-ref-type>
+      org.apache.catalina.UserDatabase
+    </resource-env-ref-type>
+  </resource-env-ref>
+
+  <!-- Define a Security Constraint on this Application -->
+  <security-constraint>
+    <web-resource-collection>
+      <web-resource-name>HTMLManger and Manager command</web-resource-name>
+      <url-pattern>/jmxproxy/*</url-pattern>
+      <url-pattern>/html/*</url-pattern>
+      <url-pattern>/list</url-pattern>
+      <url-pattern>/sessions</url-pattern>
+      <url-pattern>/start</url-pattern>
+      <url-pattern>/stop</url-pattern>
+      <url-pattern>/install</url-pattern>
+      <url-pattern>/remove</url-pattern>
+      <url-pattern>/deploy</url-pattern>
+      <url-pattern>/undeploy</url-pattern>
+      <url-pattern>/reload</url-pattern>
+      <url-pattern>/save</url-pattern>
+      <url-pattern>/serverinfo</url-pattern>
+      <url-pattern>/status/*</url-pattern>
+      <url-pattern>/roles</url-pattern>
+      <url-pattern>/resources</url-pattern>
+    </web-resource-collection>
+    <auth-constraint>
+       <!-- NOTE:  This role is not present in the default users file -->
+       <role-name>manager</role-name>
+    </auth-constraint>
+  </security-constraint>
+
+  <!-- Define the Login Configuration for this Application -->
+  <login-config>
+    <auth-method>BASIC</auth-method>
+    <realm-name>Tomcat Manager Application</realm-name>
+  </login-config>
+
+  <!-- Security roles referenced by this web application -->
+  <security-role>
+    <description>
+      The role that is required to log in to the Manager Application
+    </description>
+    <role-name>manager</role-name>
+  </security-role>
+
+</web-app>
diff --git a/webapps/manager/images/add.gif b/webapps/manager/images/add.gif
new file mode 100644 (file)
index 0000000..0774d07
Binary files /dev/null and b/webapps/manager/images/add.gif differ
diff --git a/webapps/manager/images/asf-logo.gif b/webapps/manager/images/asf-logo.gif
new file mode 100644 (file)
index 0000000..22eb9d7
Binary files /dev/null and b/webapps/manager/images/asf-logo.gif differ
diff --git a/webapps/manager/images/code.gif b/webapps/manager/images/code.gif
new file mode 100644 (file)
index 0000000..d27307b
Binary files /dev/null and b/webapps/manager/images/code.gif differ
diff --git a/webapps/manager/images/design.gif b/webapps/manager/images/design.gif
new file mode 100644 (file)
index 0000000..f5db0a9
Binary files /dev/null and b/webapps/manager/images/design.gif differ
diff --git a/webapps/manager/images/docs.gif b/webapps/manager/images/docs.gif
new file mode 100644 (file)
index 0000000..d64a4a1
Binary files /dev/null and b/webapps/manager/images/docs.gif differ
diff --git a/webapps/manager/images/fix.gif b/webapps/manager/images/fix.gif
new file mode 100644 (file)
index 0000000..d59ad64
Binary files /dev/null and b/webapps/manager/images/fix.gif differ
diff --git a/webapps/manager/images/tomcat.gif b/webapps/manager/images/tomcat.gif
new file mode 100644 (file)
index 0000000..6175673
Binary files /dev/null and b/webapps/manager/images/tomcat.gif differ
diff --git a/webapps/manager/images/update.gif b/webapps/manager/images/update.gif
new file mode 100644 (file)
index 0000000..31e22ab
Binary files /dev/null and b/webapps/manager/images/update.gif differ
diff --git a/webapps/manager/images/void.gif b/webapps/manager/images/void.gif
new file mode 100644 (file)
index 0000000..e565824
Binary files /dev/null and b/webapps/manager/images/void.gif differ
diff --git a/webapps/manager/manager.xml b/webapps/manager/manager.xml
new file mode 100644 (file)
index 0000000..ffbde2e
--- /dev/null
@@ -0,0 +1,17 @@
+<!--
+
+    Context configuration file for the Tomcat Manager Web App
+
+    $Id: manager.xml 303123 2004-08-26 17:03:35Z remm $
+
+-->
+
+
+<Context docBase="${catalina.home}/server/webapps/manager"
+         privileged="true" antiResourceLocking="false" antiJARLocking="false">
+
+  <!-- Link to the user database we will get roles from -->
+  <ResourceLink name="users" global="UserDatabase"
+                type="org.apache.catalina.UserDatabase"/>
+
+</Context>
diff --git a/webapps/manager/status.xsd b/webapps/manager/status.xsd
new file mode 100644 (file)
index 0000000..0f266de
--- /dev/null
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!-- edited with XMLSPY v5 rel. 4 U (http://www.xmlspy.com) by peter lin (consultant) -->
+<!--W3C Schema generated by XMLSPY v5 rel. 4 U (http://www.xmlspy.com)-->
+<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
+       <xs:complexType name="connector">
+               <xs:sequence>
+                       <xs:element name="threadInfo" type="threadInfo"/>
+                       <xs:element name="requestInfo" type="requestInfo"/>
+                       <xs:element name="workers" type="workers"/>
+               </xs:sequence>
+               <xs:attribute name="name" type="xs:string" use="required"/>
+       </xs:complexType>
+       <xs:complexType name="jvm">
+               <xs:sequence>
+                       <xs:element name="memory" type="memory"/>
+               </xs:sequence>
+       </xs:complexType>
+       <xs:complexType name="memory">
+               <xs:attribute name="free" type="xs:long" use="required"/>
+               <xs:attribute name="total" type="xs:long" use="required"/>
+               <xs:attribute name="max" type="xs:long" use="required"/>
+       </xs:complexType>
+       <xs:complexType name="requestInfo">
+               <xs:attribute name="maxTime" type="xs:long" use="required"/>
+               <xs:attribute name="processingTime" type="xs:int" use="required"/>
+               <xs:attribute name="requestCount" type="xs:long" use="required"/>
+               <xs:attribute name="errorCount" type="xs:long" use="required"/>
+               <xs:attribute name="bytesReceived" type="xs:long" use="required"/>
+               <xs:attribute name="bytesSent" type="xs:long" use="required"/>
+       </xs:complexType>
+       <xs:element name="status">
+               <xs:complexType>
+                       <xs:sequence>
+                               <xs:element name="jvm" type="jvm"/>
+                               <xs:element name="connector" type="connector"/>
+                       </xs:sequence>
+               </xs:complexType>
+       </xs:element>
+       <xs:complexType name="threadInfo">
+               <xs:attribute name="maxThreads" type="xs:int" use="required"/>
+               <xs:attribute name="minSpareThreads" type="xs:int" use="required"/>
+               <xs:attribute name="maxSpareThreads" type="xs:int" use="required"/>
+               <xs:attribute name="currentThreadCount" type="xs:int" use="required"/>
+               <xs:attribute name="currentThreadsBusy" type="xs:int" use="required"/>
+       </xs:complexType>
+       <xs:complexType name="worker">
+               <xs:attribute name="stage" type="xs:string" use="required"/>
+               <xs:attribute name="requestProcessingTime" type="xs:int" use="required"/>
+               <xs:attribute name="requestBytesSent" type="xs:long" use="required"/>
+               <xs:attribute name="requestBytesRecieved" type="xs:long" use="required"/>
+               <xs:attribute name="remoteAddr" type="xs:string" use="required"/>
+               <xs:attribute name="virtualHost" type="xs:string" use="required"/>
+               <xs:attribute name="method" type="xs:string" use="required"/>
+               <xs:attribute name="currentUri" type="xs:string" use="required"/>
+               <xs:attribute name="currentQueryString" type="xs:string" use="required"/>
+               <xs:attribute name="protocol" type="xs:string" use="required"/>
+       </xs:complexType>
+       <xs:complexType name="workers">
+               <xs:sequence>
+                       <xs:element name="worker" type="worker"/>
+               </xs:sequence>
+       </xs:complexType>
+</xs:schema>
diff --git a/webapps/manager/xform.xsl b/webapps/manager/xform.xsl
new file mode 100644 (file)
index 0000000..c5ced3b
--- /dev/null
@@ -0,0 +1,96 @@
+<?xml version="1.0"?>
+
+<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+  version="1.0">
+
+  <!-- Output method -->
+  <xsl:output encoding="iso-8859-1"
+              indent="no"/>
+
+  <xsl:template match="status">
+    <html>
+    <head>
+       <TITLE>Tomcat Status</TITLE>
+               <STYLE type="text/css">
+                       body, table, tr, td, a, div, span {
+                               vertical-align : top;
+                       }
+               </STYLE>
+    </head>
+    <body>
+      <div style='font-size:20px;'>Tomcat Status</div>
+
+      <xsl:apply-templates select="jvm"/>
+      <xsl:apply-templates select="connector"/>
+     </body>
+    </html>
+  </xsl:template>
+
+  <xsl:template match="jvm">
+   <xsl:apply-templates select="memory"/>
+  </xsl:template>
+
+  <xsl:template match="memory">
+    <table><tr>
+                <td><b>JVM:</b></td>
+                <td><b>free:</b> <xsl:value-of select="@free"/></td>
+                <td><b>total:</b> <xsl:value-of select="@total"/></td>
+                <td><b>max:</b> <xsl:value-of select="@max"/></td>
+          </tr>
+    </table><hr />
+  </xsl:template>
+
+  <xsl:template match="connector">
+        <b>Connector -- </b> <xsl:value-of select="@name"/><br />
+
+       <xsl:apply-templates select="threadInfo"/>
+       <xsl:apply-templates select="requestInfo"/>
+       <xsl:apply-templates select="workers"/>
+  </xsl:template>
+
+  <xsl:template match="threadInfo">
+    <table><tr>
+                <td><b>threadInfo </b></td>
+                <td><b>maxThreads:</b> <xsl:value-of select="@maxThreads"/></td>
+                <td><b>minSpareThreads:</b> <xsl:value-of select="@minSpareThreads"/></td>
+                <td><b>maxSpareThreads:</b> <xsl:value-of select="@maxSpareThreads"/></td>
+                <td><b>currentThreadCount:</b> <xsl:value-of select="@currentThreadCount"/></td>
+                <td><b>currentThreadsBusy:</b> <xsl:value-of select="@currentThreadsBusy"/></td>
+          </tr>
+    </table><hr />
+  </xsl:template>
+
+  <xsl:template match="requestInfo">
+    <table><tr>
+                <td><b>requestInfo </b></td>
+                <td><b>maxTime:</b> <xsl:value-of select="@maxTime"/></td>
+                <td><b>processingTime:</b> <xsl:value-of select="@processingTime"/></td>
+                <td><b>requestCount:</b> <xsl:value-of select="@requestCount"/></td>
+                <td><b>errorCount:</b> <xsl:value-of select="@errorCount"/></td>
+                <td><b>bytesReceived:</b> <xsl:value-of select="@bytesReceived"/></td>
+                <td><b>bytesSent:</b> <xsl:value-of select="@bytesSent"/></td>
+          </tr>
+    </table><hr />
+  </xsl:template>
+
+  <xsl:template match="workers">
+   <table>
+    <tr><th>Stage</th><th>Time</th><th>B Sent</th><th>B Recv</th><th>Client</th><th>VHost</th><th>Request</th></tr>
+       <xsl:apply-templates select="worker"/>
+
+   </table><hr />
+  </xsl:template>
+
+  <xsl:template match="worker">
+   <tr>
+    <td><xsl:value-of select="@stage"/></td>
+    <td><xsl:value-of select="@requestProcessingTime"/></td>
+    <td><xsl:value-of select="@requestBytesSent"/></td>
+    <td><xsl:value-of select="@requestBytesReceived"/></td>
+    <td><xsl:value-of select="@remoteAddr"/></td>
+    <td><xsl:value-of select="@virtualHost"/></td>
+    <td><xsl:value-of select="@method"/> <xsl:value-of select="@currentUri"/>?<xsl:value-of select="@currentQueryString"/> <xsl:value-of select="@protocol"/></td>
+   </tr>
+  </xsl:template>
+
+</xsl:stylesheet>