You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by rj...@apache.org on 2012/12/05 21:21:01 UTC
svn commit: r1417624 [10/38] - in /tomcat/site/trunk/docs/tomcat-8.0-doc: ./
api/ appdev/ appdev/sample/ appdev/sample/docs/ appdev/sample/src/
appdev/sample/src/mypackage/ appdev/sample/web/ appdev/sample/web/WEB-INF/
appdev/sample/web/images/ archite...
Added: tomcat/site/trunk/docs/tomcat-8.0-doc/config/context.html
URL: http://svn.apache.org/viewvc/tomcat/site/trunk/docs/tomcat-8.0-doc/config/context.html?rev=1417624&view=auto
==============================================================================
--- tomcat/site/trunk/docs/tomcat-8.0-doc/config/context.html (added)
+++ tomcat/site/trunk/docs/tomcat-8.0-doc/config/context.html Wed Dec 5 20:20:35 2012
@@ -0,0 +1,1100 @@
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 8 Configuration Reference (8.0.0-dev) - The Context Container</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+ .noPrint {display: none;}
+ td#mainBody {width: 100%;}
+ </style><style type="text/css">
+ code {background-color:rgb(224,255,255);padding:0 0.1em;}
+ code.attributeName, code.propertyName {background-color:transparent;}
+ </style><style type="text/css">
+ .wrapped-source code { display: block; background-color: transparent; }
+ .wrapped-source div { margin: 0 0 0 1.25em; }
+ .wrapped-source p { margin: 0 0 0 1.25em; text-indent: -1.25em; }
+ </style><style type="text/css">
+ p.notice {
+ border: 1px solid rgb(255, 0, 0);
+ background-color: rgb(238, 238, 238);
+ color: rgb(0, 51, 102);
+ padding: 0.5em;
+ margin: 1em 2em 1em 1em;
+ }
+ </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="../images/tomcat.gif" align="right" alt="
+ The Apache Tomcat Servlet/JSP Container
+ " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 8</font></h1><font face="arial,helvetica,sanserif">Version 8.0.0-dev, Dec 5 2012</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="../images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="../index.html">Docs Home</a></li><li><a href="index.html">Config Ref. Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Top Level Elements</strong></p><ul><li><a href="server.html">Server</a></li><li><a href="service.html">Service</a></li></ul><p><strong>Executors</strong></p><ul><li><a href="executor.html">Executo
r</a></li></ul><p><strong>Connectors</strong></p><ul><li><a href="http.html">HTTP</a></li><li><a href="ajp.html">AJP</a></li></ul><p><strong>Containers</strong></p><ul><li><a href="context.html">Context</a></li><li><a href="engine.html">Engine</a></li><li><a href="host.html">Host</a></li><li><a href="cluster.html">Cluster</a></li></ul><p><strong>Nested Components</strong></p><ul><li><a href="globalresources.html">Global Resources</a></li><li><a href="jar-scanner.html">JarScanner</a></li><li><a href="listeners.html">Listeners</a></li><li><a href="loader.html">Loader</a></li><li><a href="manager.html">Manager</a></li><li><a href="realm.html">Realm</a></li><li><a href="resources.html">Resources</a></li><li><a href="valve.html">Valve</a></li></ul><p><strong>Cluster Elements</strong></p><ul><li><a href="cluster.html">Cluster</a></li><li><a href="cluster-manager.html">Manager</a></li><li><a href="cluster-channel.html">Channel</a></li><li><a href="cluster-membership.html">Channel/M
embership</a></li><li><a href="cluster-sender.html">Channel/Sender</a></li><li><a href="cluster-receiver.html">Channel/Receiver</a></li><li><a href="cluster-interceptor.html">Channel/Interceptor</a></li><li><a href="cluster-valve.html">Valve</a></li><li><a href="cluster-deployer.html">Deployer</a></li><li><a href="cluster-listener.html">ClusterListener</a></li></ul><p><strong>Other</strong></p><ul><li><a href="filter.html">Filter</a></li><li><a href="systemprops.html">System properties</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>The Context Container</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
+<ul><li><a href="#Introduction">Introduction</a><ol><li><a href="#Parallel_deployment">Parallel deployment</a></li><li><a href="#Naming">Naming</a></li><li><a href="#Defining_a_context">Defining a context</a></li></ol></li><li><a href="#Attributes">Attributes</a><ol><li><a href="#Common_Attributes">Common Attributes</a></li><li><a href="#Standard_Implementation">Standard Implementation</a></li></ol></li><li><a href="#Nested_Components">Nested Components</a></li><li><a href="#Special_Features">Special Features</a><ol><li><a href="#Logging">Logging</a></li><li><a href="#Access_Logs">Access Logs</a></li><li><a href="#Automatic_Context_Configuration">Automatic Context Configuration</a></li><li><a href="#Context_Parameters">Context Parameters</a></li><li><a href="#Environment_Entries">Environment Entries</a></li><li><a href="#Lifecycle_Listeners">Lifecycle Listeners</a></li><li><a href="#Request_Filters">Request Filters</a></li><li><a href="#Resource_Definitions">Resource Definit
ions</a></li><li><a href="#Resource_Links">Resource Links</a></li><li><a href="#Transaction">Transaction</a></li></ol></li></ul>
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
+
+ <blockquote><p><em>
+ The description below uses the variable name $CATALINA_BASE to refer the
+ base directory against which most relative paths are resolved. If you have
+ not configured Tomcat for multiple instances by setting a CATALINA_BASE
+ directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
+ the directory into which you have installed Tomcat.
+ </em></p></blockquote>
+
+ <p>The <strong>Context</strong> element represents a <em>web
+ application</em>, which is run within a particular virtual host.
+ Each web application is based on a <em>Web Application Archive</em>
+ (WAR) file, or a corresponding directory containing the corresponding
+ unpacked contents, as described in the Servlet Specification (version
+ 2.2 or later). For more information about web application archives,
+ you can download the
+ <a href="http://wiki.apache.org/tomcat/Specifications">Servlet
+ Specification</a>, and review the Tomcat
+ <a href="../appdev/index.html">Application Developer's Guide</a>.</p>
+
+ <p>The web application used to process each HTTP request is selected
+ by Catalina based on matching the longest possible prefix of the
+ Request URI against the <em>context path</em> of each defined Context.
+ Once selected, that Context will select an appropriate servlet to
+ process the incoming request, according to the servlet mappings defined
+ by the web application deployment.</p>
+
+ <p>You may define as many <strong>Context</strong> elements as you
+ wish. Each such Context MUST have a unique context name. In
+ addition, a Context must be present with a context path equal to
+ a zero-length string. This Context becomes the <em>default</em>
+ web application for this virtual host, and is used to process all
+ requests that do not match any other Context's context path.</p>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Parallel deployment"><!--()--></a><a name="Parallel_deployment"><strong>Parallel deployment</strong></a></font></td></tr><tr><td><blockquote>
+ <p><b>You may deploy multiple versions of a web application with the same
+ context path at the same time.</b> The rules used to match requests to a
+ context version are as follows:
+ </p>
+ <ul>
+ <li>If no session information is present in the request, use the latest
+ version.</li>
+ <li>If session information is present in the request, check the session
+ manager of each version for a matching session and if one is found, use that
+ version.</li>
+ <li>If session information is present in the request but no matching session
+ can be found, use the latest version.</li>
+ </ul>
+ <p>The <a href="host.html">Host</a> may be configured (via the
+ <code>undeployOldVersions</code>) to remove old versions deployed in this way
+ once they are no longer in use.</p>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Naming"><strong>Naming</strong></a></font></td></tr><tr><td><blockquote>
+ <p>When autoDeploy or deployOnStartup is used then there is a close
+ relationship between the <em>context name</em>, <em>context path</em>,
+ <em>context version</em> and the <em>base file name</em> used for the WAR
+ and/or directory that contains the web application when the WAR or directory
+ is located in the Host's appBase. When no version is specified, the rules
+ are:
+ <ul>
+ <li>contextName = contextPath</li>
+ <li>If the contextPath is a zero length string, the base name is ROOT</li>
+ <li>If the contextPath is not a zero length string, the base name is the
+ contextPath with the leading '/' removed and any remaining '/'
+ characters in the path replaced with '#'.</li>
+ </ul>
+ When a version is specified, <code>##version</code> is added to the contextName and base
+ name. To help clarify these rules, some examples are given in the following
+ table.</p>
+
+ <table class="detail-table">
+ <tr><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Path</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Version</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Context Name</font></td><td bgcolor="#039acc" valign="top"><font color="#000000" size="-1" face="arial,helvetica,sanserif">Base filename</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>None</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo##42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo##42</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">/foo/bar##42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">foo#bar##42</font></td></tr>
+ <tr><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif"><i>Empty String</i></font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">##42</font></td><td bgcolor="#a0ddf0" valign="top" align="left"><font color="#000000" size="-1" face="arial,helvetica,sanserif">ROOT##42</font></td></tr>
+ </table>
+
+ <p>The version component is treated as a <code>String</code> both for
+ performance reasons and to allow flexibility in versioning schemes. String
+ comparisons are used to determine version order. If version is not specified,
+ it is treated as the empty string.
+ Therefore,
+ <code>foo.war</code> will be treated as an earlier version than
+ <code>foo##11.war</code> and
+ <code>foo##11.war</code> will be treated as an earlier version than
+ <code>foo##2.war</code>. If using a purely numerical versioning scheme it is
+ recommended that zero padding is used so that <code>foo##002.war</code> is
+ treated as an earlier version than <code>foo##011.war</code>.
+ </p>
+
+ <p>If you want to deploy a WAR file or a directory using a context path that
+ is not related to the base file name then one of the following options must
+ be used to prevent double-deployment:
+ </p>
+ <ul>
+ <li>Disable autoDeploy and deployOnStartup and define all
+ <Strong>Context</Strong>s in server.xml</li>
+ <li>Locate the WAR and/or directory outside of the Host's appBase and use
+ a context.xml file with a docBase attribute to define it.</li>
+ </ul>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Defining a context"><!--()--></a><a name="Defining_a_context"><strong>Defining a context</strong></a></font></td></tr><tr><td><blockquote>
+ <p><b>It is NOT recommended to place <Context> elements directly in the
+ server.xml file.</b> This is because it makes modifying the
+ <strong>Context</strong> configuration more invasive since the main
+ <code>conf/server.xml</code> file cannot be reloaded without restarting
+ Tomcat.</p>
+
+ <p>Individual <strong>Context</strong> elements may be explicitly defined:
+ </p>
+ <ul>
+ <li>In an individual file at <code>/META-INF/context.xml</code> inside the
+ application files. Optionally (based on the Host's copyXML attribute)
+ this may be copied to
+ <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> and renamed to
+ application's base file name plus a ".xml" extension.</li>
+ <li>In individual files (with a ".xml" extension) in the
+ <code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.
+ The context path and version will be derived from the base name of the file
+ (the file name less the .xml extension). This file will always take precedence
+ over any context.xml file packaged in the web application's META-INF
+ directory.</li>
+ <li>Inside a <a href="host.html">Host</a> element in the main
+ <code>conf/server.xml</code>.</li>
+ </ul>
+
+ <p>Default <strong>Context</strong> elements may be defined that apply to
+ multiple web applications. Configuration for an individual web application
+ will override anything configured in one of these defaults. Any nested
+ elements, e.g. <Resource> elements, that are defined in a default
+ <strong>Context</strong> will be created once for each
+ <strong>Context</strong> to which the default applies. They will <b>not</b> be
+ shared between <strong>Context</strong> elements.
+ </p>
+ <ul>
+ <li>In the <code>$CATALINA_BASE/conf/context.xml</code> file:
+ the Context element information will be loaded by all webapps.</li>
+ <li>In the
+ <code>$CATALINA_BASE/conf/[enginename]/[hostname]/context.xml.default</code>
+ file: the Context element information will be loaded by all webapps of that
+ host.</li>
+ </ul>
+
+ <p>With the exception of server.xml, files that define <strong>Context
+ </strong> elements may only define a single <strong>Context</strong> element.
+ </p>
+
+ <p>In addition to explicitly specified Context elements, there are
+ several techniques by which Context elements can be created automatically
+ for you. See <a href="host.html#Automatic Application Deployment">
+ Automatic Application Deployment</a> and
+ <a href="host.html#User Web Applications">User Web Applications</a>
+ for more information.</p>
+
+ <p>To define multiple <Strong>Context</Strong>s that use a single WAR file or
+ directory, use one of the options described above for creating a
+ <Strong>Context</Strong> that has a path that is not related to the base file
+ name and create multiple <Strong>Context</Strong> definitions.
+ </p>
+ </blockquote></td></tr></table>
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Attributes"><strong>Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Attributes"><!--()--></a><a name="Common_Attributes"><strong>Common Attributes</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>All implementations of <strong>Context</strong>
+ support the following attributes:</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">allowCasualMultipartParsing</code></td><td align="left" valign="center">
+ <p>Set to true if Tomcat should automatically parse
+ multipart/form-data request bodies when HttpServletRequest.getPart*
+ or HttpServletRequest.getParameter* is called, even when the
+ target servlet isn't marked with the @MultipartConfig annotation
+ (See Servlet Specification 3.0, Section 3.2 for details).
+ Note that any setting other than <code>false</code> causes Tomcat
+ to behave in a way that is not technically spec-compliant.
+ The default is <code>false</code></p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">backgroundProcessorDelay</code></td><td align="left" valign="center">
+ <p>This value represents the delay in seconds between the
+ invocation of the backgroundProcess method on this context and
+ its child containers, including all wrappers.
+ Child containers will not be invoked if their delay value is not
+ negative (which would mean they are using their own processing
+ thread). Setting this to a positive value will cause
+ a thread to be spawn. After waiting the specified amount of time,
+ the thread will invoke the backgroundProcess method on this host
+ and all its child containers. A context will use background
+ processing to perform session expiration and class monitoring for
+ reloading. If not specified, the default value for this attribute is
+ -1, which means the context will rely on the background processing
+ thread of its parent host.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">className</code></td><td align="left" valign="center">
+ <p>Java class name of the implementation to use. This class must
+ implement the <code>org.apache.catalina.Context</code> interface.
+ If not specified, the standard value (defined below) will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">cookies</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> if you want cookies to be used for
+ session identifier communication if supported by the client (this
+ is the default). Set to <code>false</code> if you want to disable
+ the use of cookies for session identifier communication, and rely
+ only on URL rewriting by the application.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">crossContext</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> if you want calls within this application
+ to <code>ServletContext.getContext()</code> to successfully return a
+ request dispatcher for other web applications running on this virtual
+ host. Set to <code>false</code> (the default) in security
+ conscious environments, to make <code>getContext()</code> always
+ return <code>null</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">docBase</code></strong></td><td align="left" valign="center">
+ <p>The <em>Document Base</em> (also known as the <em>Context
+ Root</em>) directory for this web application, or the pathname
+ to the web application archive file (if this web application is
+ being executed directly from the WAR file). You may specify
+ an absolute pathname for this directory or WAR file, or a pathname
+ that is relative to the <code>appBase</code> directory of the
+ owning <a href="host.html">Host</a>.</p>
+ <p>The value of this field must not be set unless the Context element is
+ defined in server.xml or the <code>docBase</code> is not located under
+ the <a href="host.html">Host</a>'s <code>appBase</code>.</p>
+ <p>If a symbolic link is used for docBase then changes to the
+ symbolic link will only be effective after a Tomcat restart or
+ by undeploying and redeploying the context. A context reload is not
+ sufficient.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">fireRequestListenersOnForwards</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> to fire any configured
+ ServletRequestListeners when Tomcat forwards a request. This is
+ primarily of use to users of CDI frameworks that use
+ ServletRequestListeners to configure the necessary environment for a
+ request. If not specified, the default value of <code>false</code> is
+ used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">logEffectiveWebXml</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> if you want the effective web.xml used for a
+ web application to be logged (at INFO level) when the application
+ starts. The effective web.xml is the result of combining the
+ application's web.xml with any defaults configured by Tomcat and any
+ web-fragment.xml files and annotations discovered. If not specified, the
+ default value of <code>false</code> is used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> to ignore any settings in both the global
+ or <a href="host.html">Host</a> default contexts. By default, settings
+ from a default context will be used but may be overridden by a setting
+ the same attribute explicitly for the Context.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">path</code></td><td align="left" valign="center">
+ <p>The <em>context path</em> of this web application, which is
+ matched against the beginning of each request URI to select the
+ appropriate web application for processing. All of the context paths
+ within a particular <a href="host.html">Host</a> must be unique.
+ If you specify a context path of an empty string (""), you are
+ defining the <em>default</em> web application for this Host, which
+ will process all requests not assigned to other Contexts.</p>
+ <p>This attribute must only be used when statically defining a Context
+ in server.xml. In all other circumstances, the path will be inferred
+ from the filenames used for either the .xml context file or the docBase.
+ </p>
+ <p>Even when statically defining a Context in server.xml, this attribute
+ must not be set unless either the docBase is not located under the
+ <a href="host.html">Host</a>'s <code>appBase</code> or both
+ <code>deployOnStartup</code> and <code>autoDeploy</code> are false. If
+ this rule is not followed, double deployment is likely to result.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">preemptiveAuthentication</code></td><td align="left" valign="center">
+ <p>When set to <code>true</code> and the user presents credentials for a
+ resource that is not protected by a security constraint, if the
+ authenticator supports preemptive authentication (the standard
+ authenticators provided with Tomcat do) then the user' credentials
+ will be processed. If not specified, the default of <code>false</code>is
+ used.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">privileged</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> to allow this context to use container
+ servlets, like the manager servlet. Use of the <code>privileged</code>
+ attribute will change the context's parent class loader to be the
+ <em>Server</em> class loader rather than the <em>Shared</em> class
+ loader. Note that in a default installation, the <em>Common</em> class
+ loader is used for both the <em>Server</em> and the <em>Shared</em>
+ class loaders.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">reloadable</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> if you want Catalina to monitor classes in
+ <code>/WEB-INF/classes/</code> and <code>/WEB-INF/lib</code> for
+ changes, and automatically reload the web application if a change
+ is detected. This feature is very useful during application
+ development, but it requires significant runtime overhead and is
+ not recommended for use on deployed production applications. That's
+ why the default setting for this attribute is <i>false</i>. You
+ can use the <a href="../manager-howto.html">Manager</a> web
+ application, however, to trigger reloads of deployed applications
+ on demand.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">resourceOnlyServlets</code></td><td align="left" valign="center">
+ <p>Comma separated list of Servlet names (as used in
+ <code>/WEB-INF/web.xml</code>) that expect a resource to be present.
+ Ensures that welcome files associated with Servlets that expect a
+ resource to be present (such as the JSP Servlet) are not used when there
+ is no resource present. This prevents issues caused by the clarification
+ of welcome file mapping in section 10.10 of the Servlet 3.0
+ specification. If the
+ <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system property</a> is set to
+ <code>true</code>, the default value of this attribute will be the empty
+ string, else the default value will be <code>jsp</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sendRedirectBody</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, redirect responses will include a short
+ response body that includes details of the redirect as recommended by
+ RFC 2616. This is disabled by default since including a response body
+ may cause problems for some application component such as compression
+ filters.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieDomain</code></td><td align="left" valign="center">
+ <p>The domain to be used for all session cookies created for this
+ context. If set, this overrides any domain set by the web application.
+ If not set, the value specified by the web application, if any, will be
+ used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookieName</code></td><td align="left" valign="center">
+ <p>The name to be used for all session cookies created for this
+ context. If set, this overrides any name set by the web application.
+ If not set, the value specified by the web application, if any, will be
+ used, or the name <code>JSESSIONID</code> if the web application does
+ not explicitly set one.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePath</code></td><td align="left" valign="center">
+ <p>The path to be used for all session cookies created for this
+ context. If set, this overrides any path set by the web application.
+ If not set, the value specified by the web application will be used, or
+ the context path used if the web application does not explicitly set
+ one. To configure all web application to use an empty path (this can be
+ useful for portlet specification implementations) set this attribute to
+ <code>/</code> in the global <code>CATALINA_BASE/conf/context.xml</code>
+ file.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">sessionCookiePathUsesTrailingSlash</code></td><td align="left" valign="center">
+ <p>Some browsers, such as IE, will send a session cookie for a context
+ with a path of /foo with a request to /foobar. To prevent this, Tomcat
+ will add a trailing slash to the path associated with the session cookie
+ so, in the above example, the cookie path becomes /foo/. However, with a
+ cookie path of /foo/, IE will no longer send the cookie with a request
+ to /foo. This should not be a problem unless there is a servlet mapped
+ to /*. In this case this feature will need to be disabled. The default
+ value for this attribute is <code>true.</code> To disable this feature,
+ set the attribute to <code>false</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowAbortedUploads</code></td><td align="left" valign="center">
+ <p>Set to false if Tomcat should <b>not</b> read any additional request
+ body data for aborted uploads and instead abort the client connection.
+ This setting is used in the following situations:
+ </p>
+ <ul>
+ <li>the size of the request body is larger than the
+ <code>maxPostSize</code> configured in the connector</li>
+ <li>the size limit of a MultiPart upload is reached</li>
+ <li>the servlet sets the response status to 413 (Request Entity Too
+ Large) </li>
+ </ul>
+ <p>
+ Not reading the additional data will free the request processing thread
+ more quickly. Unfortunately most HTTP clients will not read the response
+ if they can not write the full request.</p>
+ <p>The default is <code>true</code>, so additional data will be
+ read.</p>
+ <p>Note if an error occurs during the request processing that triggers
+ a 5xx response, any unread request data will always be ignored and the
+ client connection will be closed once the error response has been
+ written.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">swallowOutput</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the bytes output to
+ System.out and System.err by the web application will be redirected to
+ the web application logger. If not specified, the default value
+ of the flag is <code>false</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">tldNamespaceAware</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the TLD files
+ XML validation will be namespace-aware. If you turn this flag on,
+ you should probably also turn <code>tldValidation</code> on. If the
+ <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system property</a> is set to
+ <code>true</code>, the default value of this attribute will be
+ <code>true</code>, else the default value will be <code>false</code>.
+ Setting this attribute to <code>true</code> will incur a performance
+ penalty.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">tldValidation</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the TLD files
+ will be XML validated on context startup. If the
+ <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system property</a> is set to
+ <code>true</code>, the default value of this attribute will be
+ <code>true</code>, else the default value will be <code>false</code>.
+ Setting this attribute to <code>true</code> will incur a performance
+ penalty.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">useHttpOnly</code></td><td align="left" valign="center">
+ <p>Should the HttpOnly flag be set on session cookies to prevent client
+ side script from accessing the session ID? Defaults to
+ <code>true</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">wrapperClass</code></td><td align="left" valign="center">
+ <p>Java class name of the <code>org.apache.catalina.Wrapper</code>
+ implementation class that will be used for servlets managed by this
+ Context. If not specified, a standard default value will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlNamespaceAware</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the validation of
+ XML files will be namespace-aware. If you turn this flag on,
+ you should probably also turn <code>xmlValidation</code> on. If
+ the <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system property</a> is set to
+ <code>true</code>, the default value of this attribute will be
+ <code>true</code>, else the default value will be <code>false</code>.
+ Setting this attribute to <code>true</code> will incur a performance
+ penalty.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">xmlValidation</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the XML files
+ will be validated on context startup. If the
+ <code>org.apache.catalina.STRICT_SERVLET_COMPLIANCE</code>
+ <a href="systemprops.html">system property</a> is set to
+ <code>true</code>, the default value of this attribute will be
+ <code>true</code>, else the default value will be <code>false</code>.
+ Setting this attribute to <code>true</code> will incur a performance
+ penalty.</p>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Standard Implementation"><!--()--></a><a name="Standard_Implementation"><strong>Standard Implementation</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>The standard implementation of <strong>Context</strong> is
+ <strong>org.apache.catalina.core.StandardContext</strong>.
+ It supports the following additional attributes (in addition to the
+ common attributes listed above):</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">addWebinfClassesResources</code></td><td align="left" valign="center">
+ <p>This attribute controls if, in addition to static resources being
+ served from <code>META-INF/resources</code> inside web application JAR
+ files, static resources are also served from
+ <code>WEB-INF/classes/META-INF/resources</code>. This only applies to
+ web applications with a major version of 3 or higher. Since this is a
+ proprietary extension to the Servlet 3 specification, it is disabled by
+ default. To enable this feature, set the attribute to <code>true</code>.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">allowLinking</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, symlinks will be
+ allowed inside the web application, pointing to resources outside the
+ web application base path. If not specified, the default value
+ of the flag is <code>false</code>.</p>
+ <p><b>NOTE: This flag MUST NOT be set to true on the Windows platform
+ (or any other OS which does not have a case sensitive filesystem),
+ as it will disable case sensitivity checks, allowing JSP source code
+ disclosure, among other security problems.</b></p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiJARLocking</code></td><td align="left" valign="center">
+ <p>If true, the Tomcat classloader will take extra measures to avoid
+ JAR file locking when resources are accessed inside JARs through URLs.
+ This will impact startup time of applications, but could prove to be
+ useful on platforms or configurations where file locking can occur.
+ If not specified, the default value is <code>false</code>.</p>
+
+ <p><code>antiJARLocking</code> is a subset of
+ <code>antiResourceLocking</code> and therefore, to prevent duplicate
+ work and possible issues, only one of these attributes should be set
+ to <code>true</code> at any one time.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">antiResourceLocking</code></td><td align="left" valign="center">
+ <p>If true, Tomcat will prevent any file locking.
+ This will significantly impact startup time of applications,
+ but allows full webapp hot deploy and undeploy on platforms
+ or configurations where file locking can occur.
+ If not specified, the default value is <code>false</code>.</p>
+
+ <p><code>antiJARLocking</code> is a subset of
+ <code>antiResourceLocking</code> and therefore, to prevent duplicate
+ work and possible issues, only one of these attributes should be set
+ to <code>true</code> at any one time.</p>
+
+ <p>Please note that setting this to <code>true</code> has some side
+ effects, including the disabling of JSP reloading in a running server:
+ see <a href="http://issues.apache.org/bugzilla/show_bug.cgi?id=37668">
+ Bugzilla 37668</a>.</p>
+
+ <p>Please note that setting this flag to true in applications that are
+ outside the appBase for the Host (the <code>webapps</code> directory
+ by default) will cause the application to be <strong>deleted</strong> on
+ Tomcat shutdown. You probably don't want to do this, so think twice
+ before setting antiResourceLocking=true on a webapp that's outside the
+ appBase for its Host.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheMaxSize</code></td><td align="left" valign="center">
+ <p>Maximum size of the static resource cache in kilobytes.
+ If not specified, the default value is <code>10240</code>
+ (10 megabytes).</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheObjectMaxSize</code></td><td align="left" valign="center">
+ <p>Maximum size of the static resource that will be placed in the cache.
+ If not specified, the default value is <code>512</code>
+ (512 kilobytes). If this value is greater than
+ <code>cacheMaxSize/20</code> it will be reduced to
+ <code>cacheMaxSize/20</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">cacheTTL</code></td><td align="left" valign="center">
+ <p>Amount of time in milliseconds between cache entries revalidation.
+ If not specified, the default value is <code>5000</code>
+ (5 seconds).</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">cachingAllowed</code></td><td align="left" valign="center">
+ <p>If the value of this flag is <code>true</code>, the cache for static
+ resources will be used. If not specified, the default value
+ of the flag is <code>true</code>.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesHttpClientKeepAliveThread</code></td><td align="left" valign="center">
+ <p>If <code>true</code> and an <code>sun.net.www.http.HttpClient</code>
+ keep-alive timer thread has been started by this web application and is
+ still running, Tomcat will change the context class loader for that
+ thread from the current <code>WebappClassLoader</code> to
+ <code>WebappClassLoader#parent</code> to prevent a memory leak. Note
+ that the keep-alive timer thread will stop on its own once the
+ keep-alives all expire however, on a busy system that might not happen
+ for some time. If not specified, the default value of
+ <code>true</code> will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStatic</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, Tomcat attempts to null out any static or final
+ fields from loaded classes when a web application is stopped as a work
+ around for apparent garbage collection bugs and application coding
+ errors. There have been some issues reported with log4j when this
+ is <code>true</code>. Applications without memory leaks using recent
+ JVMs should operate correctly with this attribute set to
+ <code>false</code>. If not specified, the default value of
+ <code>false</code> will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopThreads</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, Tomcat attempts to terminate threads that have
+ been started by the web application. Stopping threads is performed via
+ the deprecated (for good reason) <code>Thread.stop()</code> method and
+ is likely to result in instability. As such, enabling this should be
+ viewed as an option of last resort in a development environment and is
+ not recommended in a production environment. If not specified, the
+ default value of <code>false</code> will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">clearReferencesStopTimerThreads</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, Tomcat attempts to terminate
+ <code>java.util.Timer</code> threads that have been started by the web
+ application. Unlike standard threads, timer threads can be stopped
+ safely although there may still be side-effects for the application. If
+ not specified, the default value of <code>false</code> will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">jndiExceptionOnFailedWrite</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, any attempt by an application to modify the
+ provided JNDI context with a call to bind(), unbind(),
+ createSubContext(), destroySubContext() or close() will trigger a
+ <code>javax.naming.OperationNotSupportedException</code> as required by
+ section EE.5.3.4 of the Java EE specification. This exception can be
+ disabled by setting this attribute to true in which case any calls to
+ modify the JNDI context will return <b>without</b> making any changes
+ and methods that return values will return <code>null</code>. If not
+ specified, the specification compliant default of <code>true</code> will
+ be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">processTlds</code></td><td align="left" valign="center">
+ <p>Whether the context should process TLDs on startup. The default
+ is true. The false setting is intended for special cases
+ that know in advance TLDs are not part of the webapp.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">renewThreadsWhenStoppingContext</code></td><td align="left" valign="center">
+ <p>If <code>true</code>, when this context is stopped, Tomcat renews all
+ the threads from the thread pool that was used to serve this context.
+ This also requires that the
+ <code>ThreadLocalLeakPreventionListener</code> be configured in
+ <code>server.xml</code> and that the <code>threadRenewalDelay</code>
+ property of the <code>Executor</code> be >=0. If not specified, the
+ default value of <code>true</code> will be used.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">unloadDelay</code></td><td align="left" valign="center">
+ <p>Number of ms that the container will wait for servlets to unload.
+ If not specified, the default value is <code>2000</code> ms.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">unpackWAR</code></td><td align="left" valign="center">
+ <p>If <code>false</code>, the <strong>unpackWARs</strong> attribute of
+ the owning <a href="host.html">Host</a> will be overridden and the WAR
+ file will not be unpacked. If <code>true</code>, the value of the owning
+ <a href="host.html">Host</a>'s <strong>unpackWARs</strong>
+ attribute will determine if the WAR is unpacked. If not specified, the
+ default value is <code>true</code>. Note that WAR files located outside
+ of a <a href="host.html">Host</a>'s <strong>appBase</strong> are
+ never unpacked.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">useNaming</code></td><td align="left" valign="center">
+ <p>Set to <code>true</code> (the default) to have Catalina enable a
+ JNDI <code>InitialContext</code> for this web application that is
+ compatible with Java2 Enterprise Edition (J2EE) platform
+ conventions.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">workDir</code></td><td align="left" valign="center">
+ <p>Pathname to a scratch directory to be provided by this Context
+ for temporary read-write use by servlets within the associated web
+ application. This directory will be made visible to servlets in the
+ web application by a servlet context attribute (of type
+ <code>java.io.File</code>) named
+ <code>javax.servlet.context.tempdir</code> as described in the
+ Servlet Specification. If not specified, a suitable directory
+ underneath <code>$CATALINA_BASE/work</code> will be provided.</p>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Nested Components"><!--()--></a><a name="Nested_Components"><strong>Nested Components</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can nest at most one instance of the following utility components
+ by nesting a corresponding element inside your <strong>Context</strong>
+ element:</p>
+ <ul>
+ <li><a href="loader.html"><strong>Loader</strong></a> -
+ Configure the web application class loader that will be used to load
+ servlet and bean classes for this web application. Normally, the
+ default configuration of the class loader will be sufficient.</li>
+ <li><a href="manager.html"><strong>Manager</strong></a> -
+ Configure the session manager that will be used to create, destroy,
+ and persist HTTP sessions for this web application. Normally, the
+ default configuration of the session manager will be sufficient.</li>
+ <li><a href="realm.html"><strong>Realm</strong></a> -
+ Configure a realm that will allow its
+ database of users, and their associated roles, to be utilized solely
+ for this particular web application. If not specified, this web
+ application will utilize the Realm associated with the owning
+ <a href="host.html">Host</a> or <a href="engine.html">Engine</a>.</li>
+ <li><a href="resources.html"><strong>Resources</strong></a> -
+ Configure the resource manager that will be used to access the static
+ resources associated with this web application. Normally, the
+ default configuration of the resource manager will be sufficient.</li>
+ <li><strong>WatchedResource</strong> - The auto deployer will monitor the
+ specified static resource of the web application for updates, and will
+ reload the web application if it is updated. The content of this element
+ must be a string.</li>
+ </ul>
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Special Features"><!--()--></a><a name="Special_Features"><strong>Special Features</strong></a></font></td></tr><tr><td><blockquote>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Logging"><strong>Logging</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>A context is associated with the
+ <code>org.apache.catalina.core.ContainerBase.[enginename].[hostname].[path]</code>
+ log category. Note that the brackets are actually part of the name, don't omit them.</p>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Access Logs"><!--()--></a><a name="Access_Logs"><strong>Access Logs</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>When you run a web server, one of the output files normally generated
+ is an <em>access log</em>, which generates one line of information for
+ each request processed by the server, in a standard format. Catalina
+ includes an optional <a href="valve.html">Valve</a> implementation that
+ can create access logs in the same standard format created by web servers,
+ or in any number of custom formats.</p>
+
+ <p>You can ask Catalina to create an access log for all requests
+ processed by an <a href="engine.html">Engine</a>,
+ <a href="host.html">Host</a>, or <a href="context.html">Context</a>
+ by nesting a <a href="valve.html">Valve</a> element like this:</p>
+
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Valve className="org.apache.catalina.valves.AccessLogValve"
+ prefix="localhost_access_log." suffix=".txt"
+ pattern="common"/>
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>See <a href="valve.html#Access Log Valve">Access Log Valve</a>
+ for more information on the configuration attributes that are
+ supported.</p>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Automatic Context Configuration"><!--()--></a><a name="Automatic_Context_Configuration"><strong>Automatic Context Configuration</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you use the standard <strong>Context</strong> implementation,
+ the following configuration steps occur automatically when Catalina
+ is started, or whenever this web application is reloaded. No special
+ configuration is required to enable this feature.</p>
+
+ <ul>
+ <li>If you have not declared your own <a href="loader.html">Loader</a>
+ element, a standard web application class loader will be configured.
+ </li>
+ <li>If you have not declared your own <a href="manager.html">Manager</a>
+ element, a standard session manager will be configured.</li>
+ <li>If you have not declared your own <a href="resources.html">Resources</a>
+ element, a standard resources manager will be configured.</li>
+ <li>The web application properties listed in <code>conf/web.xml</code>
+ will be processed as defaults for this web application. This is used
+ to establish default mappings (such as mapping the <code>*.jsp</code>
+ extension to the corresponding JSP servlet), and other standard
+ features that apply to all web applications.</li>
+ <li>The web application properties listed in the
+ <code>/WEB-INF/web.xml</code> resource for this web application
+ will be processed (if this resource exists).</li>
+ <li>If your web application has specified security constraints that might
+ require user authentication, an appropriate Authenticator that
+ implements the login method you have selected will be configured.</li>
+ </ul>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Context Parameters"><!--()--></a><a name="Context_Parameters"><strong>Context Parameters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can configure named values that will be made visible to the
+ web application as servlet context initialization parameters by nesting
+ <code><Parameter></code> elements inside this element. For
+ example, you can create an initialization parameter like this:</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Parameter name="companyName" value="My Company, Incorporated"
+ override="false"/>
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>This is equivalent to the inclusion of the following element in the
+ web application deployment descriptor (<code>/WEB-INF/web.xml</code>):
+ </p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<context-param>
+ <param-name>companyName</param-name>
+ <param-value>My Company, Incorporated</param-value>
+</context-param>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+ <p>but does <em>not</em> require modification of the deployment descriptor
+ to customize this value.</p>
+
+ <p>The valid attributes for a <code><Parameter></code> element
+ are as follows:</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">
+ <p>Optional, human-readable description of this context
+ initialization parameter.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">
+ <p>The name of the context initialization parameter to be created.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">
+ <p>Set this to <code>false</code> if you do <strong>not</strong> want
+ a <code><context-param></code> for the same parameter name,
+ found in the web application deployment descriptor, to override the
+ value specified here. By default, overrides are allowed.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">
+ <p>The parameter value that will be presented to the application
+ when requested by calling
+ <code>ServletContext.getInitParameter()</code>.</p>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Environment Entries"><!--()--></a><a name="Environment_Entries"><strong>Environment Entries</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can configure named values that will be made visible to the
+ web application as environment entry resources, by nesting
+ <code><Environment></code> entries inside this element. For
+ example, you can create an environment entry like this:</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Environment name="maxExemptions" value="10"
+ type="java.lang.Integer" override="false"/>
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>This is equivalent to the inclusion of the following element in the
+ web application deployment descriptor (<code>/WEB-INF/web.xml</code>):
+ </p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<env-entry>
+ <env-entry-name>maxExemptions</env-entry-name>
+ <env-entry-value>10</env-entry-value>
+ <env-entry-type>java.lang.Integer</env-entry-type>
+</env-entry>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+ <p>but does <em>not</em> require modification of the deployment descriptor
+ to customize this value.</p>
+
+ <p>The valid attributes for an <code><Environment></code> element
+ are as follows:</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">
+ <p>Optional, human-readable description of this environment entry.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">
+ <p>The name of the environment entry to be created, relative to the
+ <code>java:comp/env</code> context.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">override</code></td><td align="left" valign="center">
+ <p>Set this to <code>false</code> if you do <strong>not</strong> want
+ an <code><env-entry></code> for the same environment entry name,
+ found in the web application deployment descriptor, to override the
+ value specified here. By default, overrides are allowed.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">
+ <p>The fully qualified Java class name expected by the web application
+ for this environment entry. Must be a legal value for
+ <code><env-entry-type></code> in the web application deployment
+ descriptor.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">value</code></strong></td><td align="left" valign="center">
+ <p>The parameter value that will be presented to the application
+ when requested from the JNDI context. This value must be convertable
+ to the Java type defined by the <code>type</code> attribute.</p>
+ </td></tr></table>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Lifecycle Listeners"><!--()--></a><a name="Lifecycle_Listeners"><strong>Lifecycle Listeners</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>If you have implemented a Java object that needs to know when this
+ <strong>Context</strong> is started or stopped, you can declare it by
+ nesting a <strong>Listener</strong> element inside this element. The
+ class name you specify must implement the
+ <code>org.apache.catalina.LifecycleListener</code> interface, and
+ the class must be packaged in a jar and placed in the
+ <code>$CATALINA_HOME/lib</code> directory.
+ It will be notified about the occurrence of the corresponding
+ lifecycle events. Configuration of such a listener looks like this:</p>
+
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Listener className="com.mycompany.mypackage.MyListener" ... >
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>Note that a Listener can have any number of additional properties
+ that may be configured from this element. Attribute names are matched
+ to corresponding JavaBean property names using the standard property
+ method naming patterns.</p>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Request Filters"><!--()--></a><a name="Request_Filters"><strong>Request Filters</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can ask Catalina to check the IP address, or host name, on every
+ incoming request directed to the surrounding
+ <a href="engine.html">Engine</a>, <a href="host.html">Host</a>, or
+ <a href="context.html">Context</a> element. The remote address or name
+ will be checked against configured "accept" and/or "deny"
+ filters, which are defined using <code>java.util.regex</code> Regular
+ Expression syntax. Requests that come from locations that are
+ not accepted will be rejected with an HTTP "Forbidden" error.
+ Example filter declarations:</p>
+
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Valve className="org.apache.catalina.valves.RemoteHostValve"
+ allow=".*\.mycompany\.com|www\.yourcompany\.com"/>
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ deny="192\.168\.1\.\d+"/>
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>See <a href="valve.html#Remote Address Filter">Remote Address Filter</a>
+ and <a href="valve.html#Remote Host Filter">Remote Host Filter</a> for
+ more information about the configuration options that are supported.</p>
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Definitions"><!--()--></a><a name="Resource_Definitions"><strong>Resource Definitions</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>You can declare the characteristics of the resource
+ to be returned for JNDI lookups of <code><resource-ref></code> and
+ <code><resource-env-ref></code> elements in the web application
+ deployment descriptor. You <strong>MUST</strong> also define
+ the needed resource parameters as attributes of the <code>Resource</code>
+ element, to configure the object factory to be used (if not known to Tomcat
+ already), and the properties used to configure that object factory.</p>
+
+ <p>For example, you can create a resource definition like this:</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <Resource name="jdbc/EmployeeDB" auth="Container"
+ type="javax.sql.DataSource"
+ description="Employees Database for HR Applications"/>
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>This is equivalent to the inclusion of the following element in the
+ web application deployment descriptor (<code>/WEB-INF/web.xml</code>):</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<resource-ref>
+ <description>Employees Database for HR Applications</description>
+ <res-ref-name>jdbc/EmployeeDB</res-ref-name>
+ <res-ref-type>javax.sql.DataSource</res-ref-type>
+ <res-auth>Container</res-auth>
+</resource-ref>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>but does <em>not</em> require modification of the deployment
+ descriptor to customize this value.</p>
+
+ <p>The valid attributes for a <code><Resource></code> element
+ are as follows:</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">auth</code></td><td align="left" valign="center">
+ <p>Specify whether the web Application code signs on to the
+ corresponding resource manager programatically, or whether the
+ Container will sign on to the resource manager on behalf of the
+ application. The value of this attribute must be
+ <code>Application</code> or <code>Container</code>. This
+ attribute is <strong>required</strong> if the web application
+ will use a <code><resource-ref></code> element in the web
+ application deployment descriptor, but is optional if the
+ application uses a <code><resource-env-ref></code> instead.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">closeMethod</code></td><td align="left" valign="center">
+ <p>Name of the zero-argument method to call on a singleton resource when
+ it is no longer required. This is intended to speed up clean-up of
+ resources that would otherwise happen as part of garbage collection.
+ This attribute is ignored if the <code>singleton</code> attribute is
+ false. If not specificed, no default is defined and no close method will
+ be called.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">description</code></td><td align="left" valign="center">
+ <p>Optional, human-readable description of this resource.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">
+ <p>The name of the resource to be created, relative to the
+ <code>java:comp/env</code> context.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">scope</code></td><td align="left" valign="center">
+ <p>Specify whether connections obtained through this resource
+ manager can be shared. The value of this attribute must be
+ <code>Shareable</code> or <code>Unshareable</code>. By default,
+ connections are assumed to be shareable.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">singleton</code></td><td align="left" valign="center">
+ <p>Specify whether this resource definition is for a singleton resource,
+ i.e. one where there is only a single instance of the resource. If this
+ attribute is <code>true</code>, multiple JNDI lookups for this resource
+ will return the same object. If this attribute is <code>false</code>,
+ multiple JNDI lookups for this resource will return different objects.
+ This attribute must be <code>true</code> for
+ <code>javax.sql.DataSource</code> resources to enable JMX registration
+ of the DataSource. The value of this attribute must be <code>true</code>
+ or <code>false</code>. By default, this attribute is <code>true</code>.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">
+ <p>The fully qualified Java class name expected by the web
+ application when it performs a lookup for this resource.</p>
+ </td></tr></table>
+
+
+ </blockquote></td></tr></table>
+
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Resource Links"><!--()--></a><a name="Resource_Links"><strong>Resource Links</strong></a></font></td></tr><tr><td><blockquote>
+
+ <p>This element is used to create a link to a global JNDI resource. Doing
+ a JNDI lookup on the link name will then return the linked global
+ resource.</p>
+
+ <p>For example, you can create a resource link like this:</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<Context>
+ ...
+ <ResourceLink name="linkToGlobalResource"
+ global="simpleValue"
+ type="java.lang.Integer"
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+
+ <p>The valid attributes for a <code><ResourceLink></code> element
+ are as follows:</p>
+
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><strong><code class="attributeName">global</code></strong></td><td align="left" valign="center">
+ <p>The name of the linked global resource in the
+ global JNDI context.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">name</code></strong></td><td align="left" valign="center">
+ <p>The name of the resource link to be created, relative to the
+ <code>java:comp/env</code> context.</p>
+ </td></tr><tr><td align="left" valign="center"><strong><code class="attributeName">type</code></strong></td><td align="left" valign="center">
+ <p>The fully qualified Java class name expected by the web
+ application when it performs a lookup for this resource link.</p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">factory</code></td><td align="left" valign="center">
+ <p>The fully qualified Java class name for the class creating these objects.
+ This class should implement the <code>javax.naming.spi.ObjectFactory</code> interface.</p>
+ </td></tr></table>
+
+ <p>When the attribute <code>factory="org.apache.naming.factory.DataSourceLinkFactory"</code> the resource link can be used with
+ two additional attributes to allow a shared data source to be used with different credentials.
+ When these two additional attributes are used in combination with the <code>javax.sql.DataSource</code>
+ type, different contexts can share a global data source with different credentials.
+ Under the hood, what happens is that a call to <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection()"><code>getConnection()</code></a>
+ is simply translated to a call <a href="http://docs.oracle.com/javase/6/docs/api/javax/sql/DataSource.html#getConnection(java.lang.String,%20java.lang.String)">
+ <code>getConnection(username, password)</code></a> on the global data source. This is an easy way to get code to be transparent to what schemas are being used,
+ yet be able to control connections (or pools) in the global configuration.
+ </p>
+ <table border="1" cellpadding="5"><tr><th width="15%" bgcolor="#023264"><font color="#ffffff">Attribute</font></th><th width="85%" bgcolor="#023264"><font color="#ffffff">Description</font></th></tr><tr><td align="left" valign="center"><code class="attributeName">username</code></td><td align="left" valign="center">
+ <p><code>username</code> value for the <code>getConnection(username, password)</code>
+ call on the linked global DataSource.
+ </p>
+ </td></tr><tr><td align="left" valign="center"><code class="attributeName">password</code></td><td align="left" valign="center">
+ <p><code>password</code> value for the <code>getConnection(username, password)</code>
+ call on the linked global DataSource.
+ </p>
+ </td></tr></table>
+ <p>Shared Data Source Example:</p>
+ <p><strong>Warning:</strong> This feature works only if the global DataSource
+supports <code>getConnection(username, password)</code> method.
+<a href="http://commons.apache.org/dbcp/">Apache Commons DBCP</a> pool that
+Tomcat uses by default does not support it. See its Javadoc for
+<code>BasicDataSource</code> class.
+<a href="../jdbc-pool.html">Apache Tomcat JDBC pool</a> does support it,
+but by default this support is disabled and can be enabled by
+<code>alternateUsernameAllowed</code> attribute. See its documentation
+for details.</p>
+<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
+<GlobalNamingResources>
+ ...
+ <Resource name="sharedDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ factory="org.apache.tomcat.jdbc.pool.DataSourceFactory"
+ alternateUsernameAllowed="true"
+ username="bar"
+ password="barpass"
+ ...
+ ...
+</GlobalNamingResources>
+
+<Context path="/foo"...>
+ ...
+ <ResourceLink
+ name="appDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ factory="org.apache.naming.factory.DataSourceLinkFactory"
+ username="foo"
+ password="foopass"
+ ...
+</Context>
+<Context path="/bar"...>
+ ...
+ <ResourceLink
+ name="appDataSource"
+ global="sharedDataSource"
+ type="javax.sql.DataSource"
+ ...
+</Context>
+</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+ <p>When a request for <code>getConnection()</code> is made in the
+ <code>/foo</code> context, the request is translated into
+ <code>getConnection("foo","foopass")</code>,
+ while a request in the <code>/bar</code> gets passed straight through.</p>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Transaction"><strong>Transaction</strong></a></font></td></tr><tr><td><blockquote>
+
[... 44 lines stripped ...]
---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@tomcat.apache.org
For additional commands, e-mail: dev-help@tomcat.apache.org