Added: tomcat/tc6.0.x/trunk/webapps/docs/appdev/source.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/appdev/source.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/appdev/source.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/appdev/source.xml Fri Jul  7 15:40:04 2006
@@ -0,0 +1,306 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="source.html">
+
+  &project;
+
+  <properties>
+    <author email="[EMAIL PROTECTED]">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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/appdev/source.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/appdev/web.xml.txt
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/appdev/web.xml.txt?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/appdev/web.xml.txt (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/appdev/web.xml.txt Fri Jul  7 15:40:04 
2006
@@ -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
+      ([EMAIL PROTECTED]), 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>[EMAIL PROTECTED]</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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/appdev/web.xml.txt
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/apr.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/apr.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/apr.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/apr.xml Fri Jul  7 15:40:04 2006
@@ -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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/apr.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/architecture/index.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/architecture/index.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/architecture/index.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/architecture/index.xml Fri Jul  7 
15:40:04 2006
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="index.html">
+
+  &project;
+
+  <properties>
+    <author email="[EMAIL PROTECTED]">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:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)</li>
+<li>Jeanfrancois Arcand
+    (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</a>)</li>
+<li>Filip Hanik
+    (<a href="mailto:[EMAIL PROTECTED]">[EMAIL PROTECTED]</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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/architecture/index.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/architecture/overview.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/architecture/overview.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/architecture/overview.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/architecture/overview.xml Fri Jul  7 
15:40:04 2006
@@ -0,0 +1,123 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="overview.html">
+
+  &project;
+
+  <properties>
+    <author email="[EMAIL PROTECTED]">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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/architecture/overview.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/architecture/project.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/architecture/project.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/architecture/project.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/architecture/project.xml Fri Jul  7 
15:40:04 2006
@@ -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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/architecture/project.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess.xml
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess.xml?rev=420006&view=auto
==============================================================================
--- tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess.xml (added)
+++ tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess.xml Fri Jul  
7 15:40:04 2006
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!DOCTYPE document [
+  <!ENTITY project SYSTEM "project.xml">
+]>
+<document url="requestProcess.html">
+
+  &project;
+
+  <properties>
+    <author email="[EMAIL PROTECTED]">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>

Propchange: tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Added: 
tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess/requestProcess.pdf
URL: 
http://svn.apache.org/viewvc/tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess/requestProcess.pdf?rev=420006&view=auto
==============================================================================
Binary file - no diff available.

Propchange: 
tomcat/tc6.0.x/trunk/webapps/docs/architecture/requestProcess/requestProcess.pdf
------------------------------------------------------------------------------
    svn:mime-type = application/pdf



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to