升级Tomcat版本 apache-tomcat-7.0.77
diff --git a/tomcat-cas/webapps/docs/manager-howto.html b/tomcat-cas/webapps/docs/manager-howto.html
index a6bf30a..d28230a 100644
--- a/tomcat-cas/webapps/docs/manager-howto.html
+++ b/tomcat-cas/webapps/docs/manager-howto.html
@@ -1,20 +1,95 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 6.0 (6.0.41) - Manager App HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
- .noPrint {display: none;}
- td#mainBody {width: 100%;}
- </style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Apache Tomcat 7 (7.0.77) - Manager App HOW-TO</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+ .noPrint {display: none;}
+ td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+table {
+ border-collapse: collapse;
+ text-align: left;
+}
+table *:not(table) {
+ /* Prevent border-collapsing for table child elements like <div> */
+ border-collapse: separate;
+}
+
+th {
+ text-align: left;
+}
+
+
+div.codeBox pre code, code.attributeName, code.propertyName, code.noHighlight, .noHighlight code {
+ background-color: transparent;
+}
+div.codeBox {
+ overflow: auto;
+ margin: 1em 0;
+}
+div.codeBox pre {
+ margin: 0;
+ padding: 4px;
+ border: 1px solid #999;
+ border-radius: 5px;
+ background-color: #eff8ff;
+ display: table; /* To prevent <pre>s from taking the complete available width. */
+ /*
+ When it is officially supported, use the following CSS instead of display: table
+ to prevent big <pre>s from exceeding the browser window:
+ max-width: available;
+ width: min-content;
+ */
+}
+
+div.codeBox pre.wrap {
+ white-space: pre-wrap;
+}
+
+
+table.defaultTable tr, table.detail-table tr {
+ border: 1px solid #CCC;
+}
+
+table.defaultTable tr:nth-child(even), table.detail-table tr:nth-child(even) {
+ background-color: #FAFBFF;
+}
+
+table.defaultTable tr:nth-child(odd), table.detail-table tr:nth-child(odd) {
+ background-color: #EEEFFF;
+}
+
+table.defaultTable th, table.detail-table th {
+ background-color: #88b;
+ color: #fff;
+}
+
+table.defaultTable th, table.defaultTable td, table.detail-table th, table.detail-table td {
+ padding: 5px 8px;
+}
+
+
+p.notice {
+ border: 1px solid rgb(255, 0, 0);
+ background-color: rgb(238, 238, 238);
+ color: rgb(0, 51, 102);
+ padding: 0.5em;
+ margin: 1em 2em 1em 1em;
+}
+</style></head><body bgcolor="#ffffff" text="#000000" link="#525D76" alink="#525D76" vlink="#525D76"><table border="0" width="100%" cellspacing="0"><!--PAGE HEADER--><tr><td><!--PROJECT LOGO--><a href="http://tomcat.apache.org/"><img src="./images/tomcat.gif" align="right" alt="
The Apache Tomcat Servlet/JSP Container
- " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 6.0</font></h1><font face="arial,helvetica,sanserif">Version 6.0.41, May 19 2014</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.gif" align="right" alt="Apache Logo" border="0"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap="nowrap" class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptor-howto.html">16) MBean Descriptor</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Apache Tomcat 6.0</h1><h2>Manager App HOW-TO</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
-<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuring_Manager_Application_Access">Configuring Manager Application Access</a></li><li><a href="#Supported_Manager_Commands">Supported Manager Commands</a><ol><li><a href="#Deploy_A_New_Application_Remotely">Deploy A New Application Remotely</a></li><li><a href="#Deploy_A_New_Application_from_a_Local_Path">Deploy A New Application from a Local Path</a></li><li><a href="#List_Currently_Deployed_Applications">List Currently Deployed Applications</a></li><li><a href="#Reload_An_Existing_Application">Reload An Existing Application</a></li><li><a href="#List_OS_and_JVM_Properties">List OS and JVM Properties</a></li><li><a href="#List_Available_Global_JNDI_Resources">List Available Global JNDI Resources</a></li><li><a href="#List_Available_Security_Roles">List Available Security Roles</a></li><li><a href="#Session_Statistics">Session Statistics</a></li><li><a href="#Start_an_Existing_Application">Start an Existing Application</a></li><li><a href="#Stop_an_Existing_Application">Stop an Existing Application</a></li><li><a href="#Undeploy_an_Existing_Application">Undeploy an Existing Application</a></li><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li><li><a href="#Server_Status">Server Status</a></li></ol></li><li><a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands With Ant</a><ol><li><a href="#Tasks_output_capture">Tasks output capture</a></li></ol></li><li><a href="#Using_the_JMX_Proxy_Servlet">Using the JMX Proxy Servlet</a><ol><li><a href="#What_is_JMX_Proxy_Servlet">What is JMX Proxy Servlet</a></li><li><a href="#JMX_Query_command">JMX Query command</a></li><li><a href="#JMX_Set_command">JMX Set command</a></li></ol></li></ul>
+ " border="0"></a></td><td><h1><font face="arial,helvetica,sanserif">Apache Tomcat 7</font></h1><font face="arial,helvetica,sanserif">Version 7.0.77, Mar 28 2017</font></td><td><!--APACHE LOGO--><a href="http://www.apache.org/"><img src="./images/asf-logo.svg" align="right" alt="Apache Logo" border="0" style="width: 266px;height: 83px;"></a></td></tr></table><table border="0" width="100%" cellspacing="4"><!--HEADER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><tr><!--LEFT SIDE NAVIGATION--><td width="20%" valign="top" nowrap class="noPrint"><p><strong>Links</strong></p><ul><li><a href="index.html">Docs Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>User Guide</strong></p><ul><li><a href="introduction.html">1) Introduction</a></li><li><a href="setup.html">2) Setup</a></li><li><a href="appdev/index.html">3) First webapp</a></li><li><a href="deployer-howto.html">4) Deployer</a></li><li><a href="manager-howto.html">5) Manager</a></li><li><a href="realm-howto.html">6) Realms and AAA</a></li><li><a href="security-manager-howto.html">7) Security Manager</a></li><li><a href="jndi-resources-howto.html">8) JNDI Resources</a></li><li><a href="jndi-datasource-examples-howto.html">9) JDBC DataSources</a></li><li><a href="class-loader-howto.html">10) Classloading</a></li><li><a href="jasper-howto.html">11) JSPs</a></li><li><a href="ssl-howto.html">12) SSL/TLS</a></li><li><a href="ssi-howto.html">13) SSI</a></li><li><a href="cgi-howto.html">14) CGI</a></li><li><a href="proxy-howto.html">15) Proxy Support</a></li><li><a href="mbeans-descriptors-howto.html">16) MBeans Descriptors</a></li><li><a href="default-servlet.html">17) Default Servlet</a></li><li><a href="cluster-howto.html">18) Clustering</a></li><li><a href="balancer-howto.html">19) Load Balancer</a></li><li><a href="connectors.html">20) Connectors</a></li><li><a href="monitoring.html">21) Monitoring and Management</a></li><li><a href="logging.html">22) Logging</a></li><li><a href="apr.html">23) APR/Native</a></li><li><a href="virtual-hosting-howto.html">24) Virtual Hosting</a></li><li><a href="aio.html">25) Advanced IO</a></li><li><a href="extras.html">26) Additional Components</a></li><li><a href="maven-jars.html">27) Mavenized</a></li><li><a href="security-howto.html">28) Security Considerations</a></li><li><a href="windows-service-howto.html">29) Windows Service</a></li><li><a href="windows-auth-howto.html">30) Windows Authentication</a></li><li><a href="jdbc-pool.html">31) Tomcat's JDBC Pool</a></li><li><a href="web-socket-howto.html">32) WebSocket</a></li></ul><p><strong>Reference</strong></p><ul><li><a href="RELEASE-NOTES.txt">Release Notes</a></li><li><a href="config/index.html">Configuration</a></li><li><a href="api/index.html">Tomcat Javadocs</a></li><li><a href="servletapi/index.html">Servlet Javadocs</a></li><li><a href="jspapi/index.html">JSP 2.2 Javadocs</a></li><li><a href="elapi/index.html">EL 2.2 Javadocs</a></li><li><a href="websocketapi/index.html">WebSocket 1.1 Javadocs</a></li><li><a href="http://tomcat.apache.org/connectors-doc/">JK 1.2 Documentation</a></li></ul><p><strong>Apache Tomcat Development</strong></p><ul><li><a href="building.html">Building</a></li><li><a href="changelog.html">Changelog</a></li><li><a href="http://wiki.apache.org/tomcat/TomcatVersions">Status</a></li><li><a href="developers.html">Developers</a></li><li><a href="architecture/index.html">Architecture</a></li><li><a href="funcspecs/index.html">Functional Specs.</a></li><li><a href="tribes/introduction.html">Tribes</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Manager App HOW-TO</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
+<ul><li><a href="#Introduction">Introduction</a></li><li><a href="#Configuring_Manager_Application_Access">Configuring Manager Application Access</a></li><li><a href="#HTML_User-friendly_Interface">HTML User-friendly Interface</a></li><li><a href="#Supported_Manager_Commands">Supported Manager Commands</a><ol><li><a href="#Common_Parameters">Common Parameters</a></li><li><a href="#Deploy_A_New_Application_Archive_(WAR)_Remotely">Deploy A New Application Archive (WAR) Remotely</a></li><li><a href="#Deploy_A_New_Application_from_a_Local_Path">Deploy A New Application from a Local Path</a><ol><li><a href="#Deploy_a_previously_deployed_webapp">Deploy a previously deployed webapp</a></li><li><a href="#Deploy_a_Directory_or_WAR_by_URL">Deploy a Directory or WAR by URL</a></li><li><a href="#Deploy_a_Directory_or_War_from_the_Host_appBase">Deploy a Directory or War from the Host appBase</a></li><li><a href="#Deploy_using_a_Context_configuration_%22.xml%22_file">Deploy using a Context configuration ".xml" file</a></li><li><a href="#Deployment_Notes">Deployment Notes</a></li><li><a href="#Deploy_Response">Deploy Response</a></li></ol></li><li><a href="#List_Currently_Deployed_Applications">List Currently Deployed Applications</a></li><li><a href="#Reload_An_Existing_Application">Reload An Existing Application</a></li><li><a href="#List_OS_and_JVM_Properties">List OS and JVM Properties</a></li><li><a href="#List_Available_Global_JNDI_Resources">List Available Global JNDI Resources</a></li><li><a href="#Session_Statistics">Session Statistics</a></li><li><a href="#Expire_Sessions">Expire Sessions</a></li><li><a href="#Start_an_Existing_Application">Start an Existing Application</a></li><li><a href="#Stop_an_Existing_Application">Stop an Existing Application</a></li><li><a href="#Undeploy_an_Existing_Application">Undeploy an Existing Application</a></li><li><a href="#Finding_memory_leaks">Finding memory leaks</a></li><li><a href="#Thread_Dump">Thread Dump</a></li><li><a href="#VM_Info">VM Info</a></li></ol></li><li><a href="#Server_Status">Server Status</a></li><li><a href="#Using_the_JMX_Proxy_Servlet">Using the JMX Proxy Servlet</a><ol><li><a href="#What_is_JMX_Proxy_Servlet">What is JMX Proxy Servlet</a></li><li><a href="#JMX_Query_command">JMX Query command</a></li><li><a href="#JMX_Get_command">JMX Get command</a></li><li><a href="#JMX_Set_command">JMX Set command</a></li><li><a href="#JMX_Invoke_command">JMX Invoke command</a></li></ol></li><li><a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands With Ant</a><ol><li><a href="#Tasks_output_capture">Tasks output capture</a></li></ol></li></ul>
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Introduction"><strong>Introduction</strong></a></font></td></tr><tr><td><blockquote>
<p>In many production environments, it is very useful to have the capability
to deploy a new web application, or undeploy an existing one, without having
to shut down and restart the entire container. In addition, you can request
an existing application to reload itself, even if you have not declared it
-to be <code>reloadable</code> in the Tomcat 6 server
+to be <code>reloadable</code> in the Tomcat server
configuration file.</p>
-<p>To support these capabilities, Tomcat 6 includes a web application
+<p>To support these capabilities, Tomcat includes a web application
(installed by default on context path <code>/manager</code>) that supports
the following functions:</p>
<ul>
@@ -30,7 +105,6 @@
<li>List the available global JNDI resources, for use in deployment
tools that are preparing <code><ResourceLink></code> elements
nested in a <code><Context></code> deployment description.</li>
-<li>List the available security roles defined in the user database.</li>
<li>Start a stopped application (thus making it available again).</li>
<li>Stop an existing application (so that it becomes unavailable), but
do not undeploy it.</li>
@@ -38,19 +112,16 @@
directory (unless it was deployed from file system).</li>
</ul>
-<p>A default Tomcat installation includes the manager. To add an instance of the
+<p>A default Tomcat installation includes the Manager. To add an instance of the
Manager web application <code>Context</code> to a new host install the
<code>manager.xml</code> context configuration file in the
<code>$CATALINA_BASE/conf/[enginename]/[hostname]</code> folder. Here is an
example:</p>
-<pre>
-<Context
- docBase="/usr/local/tomcat6/webapps/manager"
- antiResourceLocking="false" privileged="true" useHttpOnly="true">
+<div class="codeBox"><pre><code><Context privileged="true" antiResourceLocking="false"
+ docBase="${catalina.home}/webapps/manager">
<Valve className="org.apache.catalina.valves.RemoteAddrValve"
- allow="127\.0\.0\.1" />
-</Context>
-</pre>
+ allow="127\.0\.0\.1" />
+</Context></code></pre></div>
<p>If you have Tomcat configured to support multiple virtual hosts
(websites) you would need to configure a Manager for each.</p>
@@ -59,106 +130,158 @@
<ul>
<li>As an application with a user interface you use in your browser.
Here is an example URL where you can replace <code>localhost</code> with
-your website host name: <code>http://localhost/manager/html/</code> .</li>
+your website host name: <code>http://localhost:8080/manager/html</code> .</li>
<li>A minimal version using HTTP requests only which is suitable for use
by scripts setup by system administrators. Commands are given as part of the
request URI, and responses are in the form of simple text that can be easily
-parsed and processed. See <a href="#Supported Manager Commands">
+parsed and processed. See <a href="#Supported_Manager_Commands">
Supported Manager Commands</a> for more information.</li>
<li>A convenient set of task definitions for the <em>Ant</em>
(version 1.4 or later) build tool. See
-<a href="#Executing Manager Commands With Ant">Executing Manager Commands
+<a href="#Executing_Manager_Commands_With_Ant">Executing Manager Commands
With Ant</a> for more information.</li>
</ul>
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Configuring Manager Application Access"><!--()--></a><a name="Configuring_Manager_Application_Access"><strong>Configuring Manager Application Access</strong></a></font></td></tr><tr><td><blockquote>
- <blockquote>
+
<p><em>The description below uses the variable name $CATALINA_BASE to refer the
base directory against which most relative paths are resolved. If you have
- not configured Tomcat 6 for multiple instances by setting a CATALINA_BASE
+ not configured Tomcat for multiple instances by setting a CATALINA_BASE
directory, then $CATALINA_BASE will be set to the value of $CATALINA_HOME,
- the directory into which you have installed Tomcat 6.</em></p>
- </blockquote>
+ the directory into which you have installed Tomcat.</em></p>
+
<p>It would be quite unsafe to ship Tomcat with default settings that allowed
anyone on the Internet to execute the Manager application on your server.
Therefore, the Manager application is shipped with the requirement that anyone
who attempts to use it must authenticate themselves, using a username and
-password that have the appropriate role associated with them.
+password that have one of <strong>manager-xxx</strong> roles associated with
+them (the role name depends on what functionality is required).
Further, there is no username in the default users file
-(<code>$CATALINA_BASE/conf/tomcat-users.xml</code>) that is assigned an
-appropriate role. Therefore, access to the Manager application is completely
-disabled by default.</p>
+(<code>$CATALINA_BASE/conf/tomcat-users.xml</code>) that is assigned to those
+roles. Therefore, access to the Manager application is completely disabled
+by default.</p>
+
+<p>You can find the role names in the <code>web.xml</code> file of the Manager
+web application. The available roles are:</p>
+
+<ul>
+ <li><strong>manager-gui</strong> — Access to the HTML interface.</li>
+ <li><strong>manager-status</strong> — Access to the "Server Status"
+ page only.</li>
+ <li><strong>manager-script</strong> — Access to the tools-friendly
+ plain text interface that is described in this document,
+ and to the "Server Status" page.</li>
+ <li><strong>manager-jmx</strong> — Access to JMX proxy interface
+ and to the "Server Status" page.</li>
+</ul>
+
+<p>The HTML interface is protected against CSRF (Cross-Site Request Forgery)
+attacks, but the text and JMX interfaces cannot be protected. It means that
+users who are allowed access to the text and JMX interfaces have to be cautious
+when accessing the Manager application with a web browser.
+To maintain the CSRF protection:</p>
+
+<ul>
+ <li>If you use web browser to access the Manager application using
+ a user that has either <strong>manager-script</strong> or
+ <strong>manager-jmx</strong> roles (for example for testing
+ the plain text or JMX interfaces), you MUST close all windows
+ of the browser afterwards to terminate the session.
+ If you do not close the browser and visit other sites, you may become
+ victim of a CSRF attack.</li>
+ <li>It is recommended to never grant
+ the <strong>manager-script</strong> or <strong>manager-jmx</strong>
+ roles to users that have the <strong>manager-gui</strong> role.</li>
+</ul>
+
+<p><strong>Note</strong> that JMX proxy interface is effectively low-level root-like
+administrative interface of Tomcat. One can do a lot, if he knows
+what commands to call. You should be cautious when enabling the
+<strong>manager-jmx</strong> role.</p>
<p>To enable access to the Manager web application, you must either create
-a new username/password combination and associate one of the manager roles with
-it, or add a manager role to some existing username/password combination. There
-are four roles defined by the manager application:</p>
+a new username/password combination and associate one of the
+<strong>manager-xxx</strong> roles with it, or add a
+<strong>manager-xxx</strong> role
+to some existing username/password combination.
+As the majority of this document describes the using the text interface, this
+example will use the role name <strong>manager-script</strong>.
+Exactly how the usernames/passwords are configured depends on which
+<a href="config/realm.html">Realm implementation</a> you are using:</p>
<ul>
-<li><em>manager-gui</em> - Allows access to the html interface</li>
-<li><em>manager-script</em> - Allows access to the plain text interface</li>
-<li><em>manager-jmx</em> - Allows access to the JMX proxy interface</li>
-<li><em>manager-status</em> - Allows access to the read-only status pages</li>
-</ul>
-<p>The manager application is configured to use the CSRF prevention filter. For
-this filter to be effective, any user assigned the <code>manager-gui</code> role
-must not be assigned the <code>manager-script</code> nor the
-<code>manager-jmx</code> roles.</p>
-
-<p>Exactly where roles are associated to users depends on which
-<code>Realm</code> implementation you are using:</p>
-<ul>
-<li><em>MemoryRealm</em> - If you have not customized your
- <code>$CATALINA_BASE/conf/server.xml</code> to select a different one,
- Tomcat 6 defaults to an XML-format file stored at
+<li><em>UserDatabaseRealm</em> plus <em>MemoryUserDatabase</em>, or <em>MemoryRealm</em>
+ — The <em>UserDatabaseRealm</em> and <em>MemoryUserDatabase</em> are
+ configured in the default <code>$CATALINA_BASE/conf/server.xml</code>.
+ Both <em>MemoryUserDatabase</em> and <em>MemoryRealm</em> read an
+ XML-format file by default stored at
<code>$CATALINA_BASE/conf/tomcat-users.xml</code>, which can be
edited with any text editor. This file contains an XML
<code><user></code> for each individual user, which might
look something like this:
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-<user name="craigmcc" password="secret" roles="standard,manager-gui" />
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code><user username="craigmcc" password="secret" roles="standard,manager-script" /></code></pre></div>
which defines the username and password used by this individual to
log on, and the role names he or she is associated with. You can
- add a role, e.g. <strong>manager-gui</strong>, to the comma-delimited
+ add the <strong>manager-script</strong> role to the comma-delimited
<code>roles</code> attribute for one or more existing users, and/or
create new users with that assigned role.</li>
-<li><em>JDBCRealm</em> - Your user and role information is stored in
- a database accessed via JDBC. Add the required role(s) to one or more
- existing users, and/or create one or more new users with the required
- role(s) assigned, following the standard procedures for your
+<li><em>DataSourceRealm</em> or <em>JDBCRealm</em>
+ — Your user and role information is stored in
+ a database accessed via JDBC. Add the <strong>manager-script</strong> role
+ to one or more existing users, and/or create one or more new users
+ with this role assigned, following the standard procedures for your
environment.</li>
-<li><em>JNDIRealm</em> - Your user and role information is stored in
- a directory server accessed via LDAP. Add the required role(s) to one or
- more existing users, and/or create one or more new users with the required
- role(s) assigned, following the standard procedures for your
- environment.</li>
+<li><em>JNDIRealm</em> — Your user and role information is stored in
+ a directory server accessed via LDAP. Add the
+ <strong>manager-script</strong> role to one or more existing users,
+ and/or create one or more new users with this role assigned, following
+ the standard procedures for your environment.</li>
</ul>
<p>The first time you attempt to issue one of the Manager commands
described in the next section, you will be challenged to log on using
BASIC authentication. The username and password you enter do not matter,
as long as they identify a valid user in the users database who possesses
-the appropriate role.</p>
+the role <strong>manager-script</strong>.</p>
-<p>In addition to the password restrictions the manager web application
-could be restricted by the remote IP address or host by adding a
-<code>RemoteAddrValve</code> or <code>RemoteHostValve</code>. Here is
+<p>In addition to the password restrictions, access to the Manager web
+application can be restricted by the <strong>remote IP address</strong> or host
+by adding a <code>RemoteAddrValve</code> or <code>RemoteHostValve</code>.
+See <a href="config/valve.html#Remote_Address_Filter">valves documentation</a>
+for details. Here is
an example of restricting access to the localhost by IP address:</p>
-<pre>
-<Context antiResourceLocking="false" privileged="true" useHttpOnly="true">
- <Valve className="org.apache.catalina.valves.RemoteAddrValve"
- allow="127\.0\.0\.1"/>
-</Context>
-</pre>
+<div class="codeBox"><pre><code><Context privileged="true">
+ <Valve className="org.apache.catalina.valves.RemoteAddrValve"
+ allow="127\.0\.0\.1"/>
+</Context></code></pre></div>
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="HTML User-friendly Interface"><!--()--></a><a name="HTML_User-friendly_Interface"><strong>HTML User-friendly Interface</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>The user-friendly HTML interface of Manager web application is located at</p>
+
+<div class="codeBox"><pre><code>http://{host}:{port}/manager/html</code></pre></div>
+
+<p>As has already been mentioned above, you need <strong>manager-gui</strong>
+role to be allowed to access it. There is a separate document that provides
+help on this interface. See:</p>
+
+<ul>
+ <li><a href="html-manager-howto.html">HTML Manager documentation</a></li>
+</ul>
+
+<p>The HTML interface is protected against CSRF (Cross-Site Request Forgery)
+attacks. Each access to the HTML pages generates a random token, which is
+stored in your session and is included in all links on the page. If your next
+action does not have correct value of the token, the action will be denied.
+If the token has expired you can start again from the main page or
+<em>List Applications</em> page of Manager.</p>
+
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Supported Manager Commands"><!--()--></a><a name="Supported_Manager_Commands"><strong>Supported Manager Commands</strong></a></font></td></tr><tr><td><blockquote>
<p>All commands that the Manager application knows how to process are
specified in a single request URI like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://{host}:{port}/manager/{command}?{parameters}
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://{host}:{port}/manager/text/{command}?{parameters}</code></pre></div>
<p>where <code>{host}</code> and <code>{port}</code> represent the hostname
and port number on which Tomcat is running, <code>{command}</code>
represents the Manager command you wish to execute, and
@@ -166,14 +289,24 @@
that are specific to that command. In the illustrations below, customize
the host and port appropriately for your installation.</p>
+<p>The commands are usually executed by HTTP GET requests. The
+<code>/deploy</code> command has a form that is executed by an HTTP PUT request.</p>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Common Parameters"><!--()--></a><a name="Common_Parameters"><strong>Common Parameters</strong></a></font></td></tr><tr><td><blockquote>
+
<p>Most commands accept one or more of the following query parameters:</p>
<ul>
<li><strong>path</strong> - The context path (including the leading slash)
of the web application you are dealing with. To select the ROOT web
- application, specify "/". <strong>NOTE</strong> -
+ application, specify "/". <strong>NOTE</strong>:
It is not possible to perform administrative commands on the
Manager application itself.</li>
-<li><strong>war</strong> - URL of a web application archive (WAR) file,
+<li><strong>version</strong> - The version of this web application as used by
+ the <a href="config/context.html">parallel deployment</a> feature. If you
+ use parallel deployment wherever a path is required you must specify a
+ version in addition to the path and it is the combination of path and
+ version that must be unique rather than just the path.</li>
+<li><strong>war</strong> - URL of a web application archive (WAR) file, or
pathname of a directory which contains the web application, or a
Context configuration ".xml" file. You can use URLs in any of the
following formats:
@@ -186,10 +319,6 @@
path of a web application archive (WAR) file. This is valid
<strong>only</strong> for the <code>/deploy</code> command, and is
the only acceptable format to that command.</li>
- <li><strong>jar:file:/absolute/path/to/a/warfile.war!/</strong> - The
- URL to a local web application archive (WAR) file. You can use any
- syntax that is valid for the <code>JarURLConnection</code> class
- for reference to an entire JAR file.</li>
<li><strong>file:/absolute/path/to/a/context.xml</strong> - The
absolute path of a web application Context configuration ".xml"
file which contains the Context configuration element.</li>
@@ -213,28 +342,23 @@
have been translated for your platform. The examples below show the English
version of the messages.</p>
-<blockquote>
-<p><em><strong>WARNING:</strong> the legacy commands <code>/install</code> and
-<code>/remove</code> are deprecated.
-They are presently equivalent to <code>/deploy</code> and <code>/undeploy</code>,
-but could be removed in a future release.</em></p>
-</blockquote>
+</blockquote></td></tr></table>
-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application Remotely"><!--()--></a><a name="Deploy_A_New_Application_Remotely"><strong>Deploy A New Application Remotely</strong></a></font></td></tr><tr><td><blockquote>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy A New Application Archive (WAR) Remotely"><!--()--></a><a name="Deploy_A_New_Application_Archive_(WAR)_Remotely"><strong>Deploy A New Application Archive (WAR) Remotely</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?path=/foo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/foo</code></pre></div>
<p>Upload the web application archive (WAR) file that is specified as the
request data in this HTTP PUT request, install it into the <code>appBase</code>
-directory of our corresponding virtual host, and start , using the directory
-name or the war file name without the .war extension as the path. The
-application can later be undeployed (and the corresponding application directory
-removed) by use of the <code>/undeploy</code> command.</p>
+directory of our corresponding virtual host, and start, deriving the name for
+the WAR file added to the <code>appBase</code> from the specified path. The
+application can later be undeployed (and the corresponding WAR file removed) by
+use of the <code>/undeploy</code> command.</p>
-<p>The .WAR file may include Tomcat specific deployment configuration, by
-including a Context configuration XML file in
+<p>This command is executed by an HTTP PUT request.</p>
+
+<p>The .WAR file may include Tomcat specific deployment configuration, by
+including a Context configuration XML file in
<code>/META-INF/context.xml</code>.</p>
<p>URL parameters include:</p>
@@ -242,8 +366,8 @@
<li><code>update</code>: When set to true, any existing update will be
undeployed first. The default value is set to false.</li>
<li><code>tag</code>: Specifying a tag name, this allows associating the
- deployed webapp with a version number. The application version can
- be later redeployed when needed using only the tag.</li>
+ deployed webapp with a tag or label. If the web application is undeployed,
+ it can be later redeployed when needed using only the tag.</li>
</ul>
<p><strong>NOTE</strong> - This command is the logical
@@ -251,15 +375,12 @@
<p>If installation and startup is successful, you will receive a response
like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Deployed application at context path /foo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Deployed application at context path /foo</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Application already exists at path /foo</em>
- <blockquote>
<p>The context paths for all currently running web applications must be
unique. Therefore, you must undeploy the existing web
application using this context path, or choose a different context path
@@ -267,15 +388,14 @@
a parameter on the URL, with a value of <code>true</code> to avoid this
error. In that case, an undeploy will be performed on an existing
application before performing the deployment.</p>
- </blockquote></li>
+ </li>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to start the new web application.
- Check the Tomcat 6 logs for the details, but likely explanations include
+ Check the Tomcat logs for the details, but likely explanations include
problems parsing your <code>/WEB-INF/web.xml</code> file, or missing
classes encountered when initializing application event listeners and
filters.</p>
- </blockquote></li>
+ </li>
</ul>
</blockquote></td></tr></table>
@@ -286,25 +406,26 @@
<code>path</code> (which must not be in use by any other web application).
This command is the logical opposite of the <code>/undeploy</code> command.</p>
-<p>There are a number of different ways the deploy command can be used.</p>
+<p>This command is executed by an HTTP GET request.
+There are a number of different ways the deploy command can be used.</p>
-<h3>Deploy a version of a previously deployed webapp</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a previously deployed webapp"><!--()--></a><a name="Deploy_a_previously_deployed_webapp"><strong>Deploy a previously deployed webapp</strong></a></font></td></tr><tr><td><blockquote>
-<p>This can be used to deploy a previous version of a web application, which
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/footoo&tag=footag</code></pre></div>
+
+<p>This can be used to deploy a previously deployed web application, which
has been deployed using the <code>tag</code> attribute. Note that the work
-directory for the manager webapp will contain the previously deployed WARs;
+directory of the Manager webapp will contain the previously deployed WARs;
removing it would make the deployment fail.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?path=/footoo&tag=footag
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+</blockquote></td></tr></table>
-<h3>Deploy a Directory or WAR by URL</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or WAR by URL"><!--()--></a><a name="Deploy_a_Directory_or_WAR_by_URL"><strong>Deploy a Directory or WAR by URL</strong></a></font></td></tr><tr><td><blockquote>
<p>Deploy a web application directory or ".war" file located on the Tomcat
-server. If no <code>path</code> is specified, the directory name or the war file
-name without the ".war" extension is used as the path. The <code>war</code>
-parameter specifies a URL (including the <code>file:</code> scheme) for either
+server. If no <code>path</code> is specified, the path and version are derived
+from the directory name or the war file name. The <code>war</code> parameter
+specifies a URL (including the <code>file:</code> scheme) for either
a directory or a web application archive (WAR) file. The supported syntax for
a URL referring to a WAR file is described on the Javadocs page for the
<code>java.net.JarURLConnection</code> class. Use only URLs that refer to
@@ -313,9 +434,7 @@
<p>In this example the web application located in the directory
<code>/path/to/foo</code> on the Tomcat server is deployed as the
web application context named <code>/footoo</code>.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?path=/footoo&war=file:/path/to/foo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?path=/footoo&war=file:/path/to/foo</code></pre></div>
<p>In this example the ".war" file <code>/path/to/bar.war</code> on the
@@ -323,35 +442,31 @@
<code>/bar</code>. Notice that there is no <code>path</code> parameter
so the context path defaults to the name of the web application archive
file without the ".war" extension.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?war=jar:file:/path/to/bar.war!/
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=file:/path/to/bar.war</code></pre></div>
+</blockquote></td></tr></table>
-<h3>Deploy a Directory or War from the Host appBase</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy a Directory or War from the Host appBase"><!--()--></a><a name="Deploy_a_Directory_or_War_from_the_Host_appBase"><strong>Deploy a Directory or War from the Host appBase</strong></a></font></td></tr><tr><td><blockquote>
<p>Deploy a web application directory or ".war" file located in your Host
-appBase directory. The directory name or the war file name without the ".war"
-extension is used as the path.</p>
+appBase directory. The path and optional version are derived from the directory
+or war file name.</p>
<p>In this example the web application located in a sub directory named
<code>foo</code> in the Host appBase directory of the Tomcat server is
deployed as the web application context named <code>/foo</code>. Notice
that the context path used is the name of the web application directory.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?war=foo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=foo</code></pre></div>
<p>In this example the ".war" file <code>bar.war</code> located in your
Host appBase directory on the Tomcat server is deployed as the web
application context named <code>/bar</code>.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?war=bar.war
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?war=bar.war</code></pre></div>
+</blockquote></td></tr></table>
-<h3>Deploy using a Context configuration ".xml" file</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy using a Context configuration %22.xml%22 file"><!--()--></a><a name="Deploy_using_a_Context_configuration_%22.xml%22_file"><strong>Deploy using a Context configuration ".xml" file</strong></a></font></td></tr><tr><td><blockquote>
<p>If the Host deployXML flag is set to true you can deploy a web
application using a Context configuration ".xml" file and an optional
@@ -363,15 +478,8 @@
web application Context just as if it were configured in your
Tomcat <code>server.xml</code> configuration file. Here is an
example:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-<Context path="/foobar" docBase="/path/to/application/foobar">
-
- <!-- Link to the user database we will get roles from -->
- <ResourceLink name="users" global="UserDatabase"
- type="org.apache.catalina.UserDatabase"/>
-
-</Context>
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code><Context path="/foobar" docBase="/path/to/application/foobar">
+</Context></code></pre></div>
<p>When the optional <code>war</code> parameter is set to the URL
@@ -380,30 +488,27 @@
<p>Here is an example of deploying an application using a Context
configuration ".xml" file.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy?config=file:/path/context.xml
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy?config=file:/path/context.xml</code></pre></div>
<p>Here is an example of deploying an application using a Context
configuration ".xml" file and a web application ".war" file located
on the server.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/deploy
- ?config=file:/path/context.xml&war=jar:file:/path/bar.war!/
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/deploy
+ ?config=file:/path/context.xml&war=file:/path/bar.war</code></pre></div>
+</blockquote></td></tr></table>
-<h3>Deployment Notes</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment Notes"><!--()--></a><a name="Deployment_Notes"><strong>Deployment Notes</strong></a></font></td></tr><tr><td><blockquote>
<p>If the Host is configured with unpackWARs=true and you deploy a war
file, the war will be unpacked into a directory in your Host appBase
directory.</p>
<p>If the application war or directory is installed in your Host appBase
-directory and either the Host is configured with autoDeploy=true or
-liveDeploy=true, the Context path must match the directory name or
-war file name without the ".war" extension.</p>
+directory and either the Host is configured with autoDeploy=true or the
+Context path must match the directory name or war file name without the
+".war" extension.</p>
<p>For security when untrusted users can manage web applications, the
Host deployXML flag can be set to false. This prevents untrusted users
@@ -411,20 +516,18 @@
also prevents them from deploying application directories or ".war"
files located outside of their Host appBase.</p>
+</blockquote></td></tr></table>
-<h3>Deploy Response</h3>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deploy Response"><!--()--></a><a name="Deploy_Response"><strong>Deploy Response</strong></a></font></td></tr><tr><td><blockquote>
<p>If installation and startup is successful, you will receive a response
like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Deployed application at context path /foo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Deployed application at context path /foo</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Application already exists at path /foo</em>
- <blockquote>
<p>The context paths for all currently running web applications must be
unique. Therefore, you must undeploy the existing web
application using this context path, or choose a different context path
@@ -432,77 +535,69 @@
a parameter on the URL, with a value of <code>true</code> to avoid this
error. In that case, an undeploy will be performed on an existing
application before performing the deployment.</p>
- </blockquote></li>
+ </li>
<li><em>Document base does not exist or is not a readable directory</em>
- <blockquote>
<p>The URL specified by the <code>war</code> parameter must identify a
directory on this server that contains the "unpacked" version of a
web application, or the absolute URL of a web application archive (WAR)
file that contains this application. Correct the value specified by
the <code>war</code> parameter.</p>
- </blockquote></li>
+ </li>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to start the new web application.
- Check the Tomcat 6 logs for the details, but likely explanations include
+ Check the Tomcat logs for the details, but likely explanations include
problems parsing your <code>/WEB-INF/web.xml</code> file, or missing
classes encountered when initializing application event listeners and
filters.</p>
- </blockquote></li>
+ </li>
<li><em>Invalid application URL was specified</em>
- <blockquote>
<p>The URL for the directory or web application that you specified
was not valid. Such URLs must start with <code>file:</code>, and URLs
for a WAR file must end in ".war".</p>
- </blockquote></li>
+ </li>
<li><em>Invalid context path was specified</em>
- <blockquote>
<p>The context path must start with a slash character. To reference the
ROOT web application use "/".</p>
- </blockquote></li>
+ </li>
<li><em>Context path must match the directory or WAR file name:</em>
- <blockquote>
- If the application war or directory is installed in your Host appBase
- directory and either the Host is configured with autoDeploy=true or
- liveDeploy=true, the Context path must match the directory name or
- war file name without the ".war" extension.
- </blockquote></li>
+ <p>If the application war or directory is installed in your Host appBase
+ directory and either the Host is configured with autoDeploy=true the
+ Context path must match the directory name or war file name without
+ the ".war" extension.</p>
+ </li>
<li><em>Only web applications in the Host web application directory can
be installed</em>
- <blockquote>
+ <p>
If the Host deployXML flag is set to false this error will happen
if an attempt is made to deploy a web application directory or
".war" file outside of the Host appBase directory.
- </blockquote></li>
+ </p></li>
</ul>
</blockquote></td></tr></table>
+</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Currently Deployed Applications"><!--()--></a><a name="List_Currently_Deployed_Applications"><strong>List Currently Deployed Applications</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/list
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/list</code></pre></div>
<p>List the context paths, current status (<code>running</code> or
<code>stopped</code>), and number of active sessions for all currently
deployed web applications. A typical response immediately
after starting Tomcat might look like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Listed applications for virtual host localhost
-/webdav:running:0
-/examples:running:0
-/manager:running:0
-/:running:0
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Listed applications for virtual host localhost
+/webdav:running:0:webdav
+/examples:running:0:examples
+/manager:running:0:manager
+/:running:0:ROOT
+/test:running:0:test##2
+/test:running:0:test##1</code></pre></div>
</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Reload An Existing Application"><!--()--></a><a name="Reload_An_Existing_Application"><strong>Reload An Existing Application</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/reload?path=/examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/reload?path=/examples</code></pre></div>
<p>Signal an existing application to shut itself down and reload. This can
be useful when the web application context is not reloadable and you have
@@ -510,41 +605,31 @@
directory or when you have added or updated jar files in the
<code>/WEB-INF/lib</code> directory.
</p>
-<p><strong>NOTE:</strong> The <code>/WEB-INF/web.xml</code>
-web application configuration file is not reread on a reload.
-If you have made changes to your web.xml file you must stop
-then start the web application.
-</p>
<p>If this command succeeds, you will see a response like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Reloaded application at context path /examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Reloaded application at context path /examples</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to restart the web application.
- Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ Check the Tomcat logs for the details.</p>
+ </li>
<li><em>Invalid context path was specified</em>
- <blockquote>
<p>The context path must start with a slash character. To reference the
ROOT web application use "/".</p>
- </blockquote></li>
+ </li>
<li><em>No context exists for path /foo</em>
- <blockquote>
<p>There is no deployed application on the context path
that you specified.</p>
- </blockquote></li>
+ </li>
<li><em>No context path was specified</em>
- <blockquote>
+ <p>
The <code>path</code> parameter is required.
- </blockquote></li>
+ </p></li>
<li><em>Reload not supported on WAR deployed at path /foo</em>
- <blockquote>
+ <p>
Currently, application reloading (to pick up changes to the classes or
<code>web.xml</code> file) is not supported when a web application is
deployed directly from a WAR file. It only works when the web application
@@ -552,16 +637,14 @@
you should <code>undeploy</code> and then <code>deploy</code> or
<code>deploy</code> with the <code>update</code> parameter the
application again to pick up your changes.
- </blockquote></li>
+ </p></li>
</ul>
</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List OS and JVM Properties"><!--()--></a><a name="List_OS_and_JVM_Properties"><strong>List OS and JVM Properties</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/serverinfo
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/serverinfo</code></pre></div>
<p>Lists information about the Tomcat version, OS, and JVM properties.</p>
@@ -569,19 +652,16 @@
include an error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to enumerate the system properties.
- Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ Check the Tomcat logs for the details.</p>
+ </li>
</ul>
</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Available Global JNDI Resources"><!--()--></a><a name="List_Available_Global_JNDI_Resources"><strong>List Available Global JNDI Resources</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/resources[?type=xxxxx]
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/resources[?type=xxxxx]</code></pre></div>
<p>List the global JNDI resources that are available for use in resource
links for context configuration files. If you specify the <code>type</code>
@@ -593,13 +673,9 @@
<p>Depending on whether the <code>type</code> request parameter is specified
or not, the first line of a normal response will be:</p>
-<pre>
- OK - Listed global resources of all types
-</pre>
+<div class="codeBox"><pre><code>OK - Listed global resources of all types</code></pre></div>
<p>or</p>
-<pre>
- OK - Listed global resources of type xxxxx
-</pre>
+<div class="codeBox"><pre><code>OK - Listed global resources of type xxxxx</code></pre></div>
<p>followed by one line for each resource. Each line is composed of fields
delimited by colon characters (":"), as follows:</p>
<ul>
@@ -614,99 +690,58 @@
include an error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to enumerate the global JNDI
- resources. Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ resources. Check the Tomcat logs for the details.</p>
+ </li>
<li><em>No global JNDI resources are available</em>
- <blockquote>
<p>The Tomcat server you are running has been configured without
global JNDI resources.</p>
- </blockquote></li>
+ </li>
</ul>
</blockquote></td></tr></table>
-
-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="List Available Security Roles"><!--()--></a><a name="List_Available_Security_Roles"><strong>List Available Security Roles</strong></a></font></td></tr><tr><td><blockquote>
-
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/roles
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
-
-<p>List the security role names (and corresponding descriptions) that are
-available in the <code>org.apache.catalina.UserDatabase</code> resource that
-is linked to the <code>users</code> resource reference in the web.xml file
-for the Manager web application. This would typically be used, for example,
-by a deployment tool that wanted to create
-<code><security-role-ref></code> elements to map security role names
-used in a web application to the role names actually defined within the
-container.</p>
-
-<p>By default, the <code>users</code> resource reference is pointed at the
-global <code>UserDatabase</code> resource. If you choose to utilize a
-different user database per virtual host, you should modify the
-<code><ResourceLink></code> element in the default
-<code>manager.xml</code> context configuration file to point at the global
-user database resource for this virtual host.</p>
-
-<p>When this command is executed, the first line of the response will be:</p>
-<pre>
- OK - Listed security roles
-</pre>
-<p>followed by one line for each security role. Each line is composed of
-fields delimited by colon characters (":") as follows:</p>
-<ul>
-<li><em>Security Role Name</em> - A security role name that is known to Tomcat
- in the user database.</li>
-<li><em>Description</em> - Description of this security role (useful in
- creating user interfaces for selecting roles.</li>
-</ul>
-
-<p>If an error occurs, the response will start with <code>FAIL</code> and
-include an error message. Possible causes for problems include:</p>
-<ul>
-<li><em>Cannot resolve user database reference</em> - A JNDI error prevented
- the successful lookup of the <code>org.apache.catalina.UserDatabase</code>
- resource. Check the Tomcat log files for a stack trace associated with
- this error.</li>
-<li><em>No user database is available</em> - You have not configured a resource
- reference for the <code>users</code> resource that points at an
- appropriate user database instance. Check your <code>manager.xml</code>
- file and ensure that you have created an appropriate
- <code><ResourceLink></code> or
- <code><ResourceParams></code> element for this resource.</li>
-</ul>
-
-</blockquote></td></tr></table>
-
-
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Session Statistics"><!--()--></a><a name="Session_Statistics"><strong>Session Statistics</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/sessions?path=/examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/sessions?path=/examples</code></pre></div>
<p>Display the default session timeout for a web application, and the
-number of currently active sessions that fall within ten-minute ranges of
+number of currently active sessions that fall within one-minute ranges of
their actual timeout times. For example, after restarting Tomcat and then
executing one of the JSP samples in the <code>/examples</code> web app,
you might get something like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Session information for application at context path /examples
+
+<div class="codeBox"><pre><code>OK - Session information for application at context path /examples
Default maximum session inactive interval 30 minutes
-30 - <40 minutes:1 sessions
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<1 minutes: 1 sessions
+1 - <2 minutes: 1 sessions</code></pre></div>
</blockquote></td></tr></table>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Expire Sessions"><!--()--></a><a name="Expire_Sessions"><strong>Expire Sessions</strong></a></font></td></tr><tr><td><blockquote>
+
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/expire?path=/examples&idle=num</code></pre></div>
+
+<p>Display the session statistics (like the above <code>/sessions</code>
+command) and expire sessions that are idle for longer than <code>num</code>
+minutes. To expire all sessions, use <code>&idle=0</code> .</p>
+
+<div class="codeBox"><pre><code>OK - Session information for application at context path /examples
+Default maximum session inactive interval 30 minutes
+1 - <2 minutes: 1 sessions
+3 - <4 minutes: 1 sessions
+>0 minutes: 2 sessions were expired</code></pre></div>
+
+<p>Actually <code>/sessions</code> and <code>/expire</code> are synonyms for
+the same command. The difference is in the presence of <code>idle</code>
+parameter.</p>
+
+</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Start an Existing Application"><!--()--></a><a name="Start_an_Existing_Application"><strong>Start an Existing Application</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/start?path=/examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/start?path=/examples</code></pre></div>
<p>Signal a stopped application to restart, and make itself available again.
Stopping and starting is useful, for example, if the database required by
@@ -715,41 +750,34 @@
users continuously encounter database exceptions.</p>
<p>If this command succeeds, you will see a response like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Started application at context path /examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Started application at context path /examples</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to start the web application.
- Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ Check the Tomcat logs for the details.</p>
+ </li>
<li><em>Invalid context path was specified</em>
- <blockquote>
<p>The context path must start with a slash character. To reference the
ROOT web application use "/".</p>
- </blockquote></li>
+ </li>
<li><em>No context exists for path /foo</em>
- <blockquote>
<p>There is no deployed application on the context path
that you specified.</p>
- </blockquote></li>
+ </li>
<li><em>No context path was specified</em>
- <blockquote>
+ <p>
The <code>path</code> parameter is required.
- </blockquote></li>
+ </p></li>
</ul>
</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Stop an Existing Application"><!--()--></a><a name="Stop_an_Existing_Application"><strong>Stop an Existing Application</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/stop?path=/examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/stop?path=/examples</code></pre></div>
<p>Signal an existing application to make itself unavailable, but leave it
deployed. Any request that comes in while an application is
@@ -757,32 +785,26 @@
"stopped" on a list applications command.</p>
<p>If this command succeeds, you will see a response like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Stopped application at context path /examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Stopped application at context path /examples</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to stop the web application.
- Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ Check the Tomcat logs for the details.</p>
+ </li>
<li><em>Invalid context path was specified</em>
- <blockquote>
<p>The context path must start with a slash character. To reference the
ROOT web application use "/".</p>
- </blockquote></li>
+ </li>
<li><em>No context exists for path /foo</em>
- <blockquote>
<p>There is no deployed application on the context path
that you specified.</p>
- </blockquote></li>
+ </li>
<li><em>No context path was specified</em>
- <blockquote>
The <code>path</code> parameter is required.
- </blockquote></li>
+ </li>
</ul>
</blockquote></td></tr></table>
@@ -790,17 +812,15 @@
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Undeploy an Existing Application"><!--()--></a><a name="Undeploy_an_Existing_Application"><strong>Undeploy an Existing Application</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/undeploy?path=/examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/undeploy?path=/examples</code></pre></div>
-<p><strong><font color="red">WARNING</font> - This command will delete any web
-application artifacts that exist within <code>appBase</code> directory
+<p><strong><span style="color: red;">WARNING</span> - This command will delete any web
+application artifacts that exist within <code>appBase</code> directory
(typically "webapps") for this virtual host</strong>.
-This will delete the the application .WAR, if present,
-the application directory resulting either from a deploy in unpacked form
+This will delete the application .WAR, if present,
+the application directory resulting either from a deploy in unpacked form
or from .WAR expansion as well as the XML Context definition from
-<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.
+<code>$CATALINA_BASE/conf/[enginename]/[hostname]/</code> directory.
If you simply want to take an application
out of service, you should use the <code>/stop</code> command instead.</p>
@@ -812,41 +832,32 @@
<code>/deploy</code> command.</p>
<p>If this command succeeds, you will see a response like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-OK - Undeployed application at context path /examples
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>OK - Undeployed application at context path /examples</code></pre></div>
<p>Otherwise, the response will start with <code>FAIL</code> and include an
error message. Possible causes for problems include:</p>
<ul>
<li><em>Encountered exception</em>
- <blockquote>
<p>An exception was encountered trying to undeploy the web application.
- Check the Tomcat 6 logs for the details.</p>
- </blockquote></li>
+ Check the Tomcat logs for the details.</p>
+ </li>
<li><em>Invalid context path was specified</em>
- <blockquote>
<p>The context path must start with a slash character. To reference the
ROOT web application use "/".</p>
- </blockquote></li>
-<li><em>No context exists for path /foo</em>
- <blockquote>
- <p>There is no deployed application on the context path
- that you specified.</p>
- </blockquote></li>
+ </li>
+<li><em>No context exists named /foo</em>
+ <p>There is no deployed application with the name that you specified.</p>
+ </li>
<li><em>No context path was specified</em>
- <blockquote>
The <code>path</code> parameter is required.
- </blockquote></li>
+ </li>
</ul>
</blockquote></td></tr></table>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Finding memory leaks"><!--()--></a><a name="Finding_memory_leaks"><strong>Finding memory leaks</strong></a></font></td></tr><tr><td><blockquote>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/findleaks
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/findleaks[?statusLine=[true|false]]</code></pre></div>
<p><strong>The find leaks diagnostic triggers a full garbage collection. It
should be used with extreme caution on production systems.</strong></p>
@@ -861,13 +872,15 @@
<p>Explicitly triggering a full garbage collection from Java code is documented
to be unreliable. Furthermore, depending on the JVM used, there are options to
disable explicit GC triggering, like <code>-XX:+DisableExplicitGC</code>.
-If you want to make sure, that the diagnostics were successfully running a full GC,
-you will need to check using tools like GC logging, JConsole or similar.</p>
+If you want to make sure, that the diagnostics were successfully running a full
+GC, you will need to check using tools like GC logging, JConsole or similar.</p>
<p>If this command succeeds, you will see a response like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-/leaking-webapp
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>/leaking-webapp</code></pre></div>
+
+<p>If you wish to see a status line included in the response then include the
+<code>statusLine</code> query parameter in the request with a value of
+<code>true</code>.</p>
<p>Each context path for a web application that was stopped, reloaded or
undeployed, but which classes from the previous runs are still loaded in memory,
@@ -876,29 +889,94 @@
<p>If the command does not succeed, the response will start with
<code>FAIL</code> and include an error message.</p>
-
+
</blockquote></td></tr></table>
-<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Status"><!--()--></a><a name="Server_Status"><strong>Server Status</strong></a></font></td></tr><tr><td><blockquote>
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Thread Dump"><!--()--></a><a name="Thread_Dump"><strong>Thread Dump</strong></a></font></td></tr><tr><td><blockquote>
-<p>From this link , you can view information about the server.</p>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/threaddump</code></pre></div>
-<p>First, you have the server and JVM version number, JVM provider, OS name
+<p>Write a JVM thread dump.</p>
+
+<p>The response will look something like this:</p>
+<div class="codeBox"><pre><code>OK - JVM thread dump
+2014-12-08 07:24:40.080
+Full thread dump Java HotSpot(TM) Client VM (25.25-b02 mixed mode):
+
+"http-nio-8080-exec-2" Id=26 cpu=46800300 ns usr=46800300 ns blocked 0 for -1 ms waited 0 for -1 ms
+ java.lang.Thread.State: RUNNABLE
+ locks java.util.concurrent.ThreadPoolExecutor$Worker@1738ad4
+ at sun.management.ThreadImpl.dumpThreads0(Native Method)
+ at sun.management.ThreadImpl.dumpAllThreads(ThreadImpl.java:446)
+ at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:440)
+ at org.apache.tomcat.util.Diagnostics.getThreadDump(Diagnostics.java:409)
+ at org.apache.catalina.manager.ManagerServlet.threadDump(ManagerServlet.java:557)
+ at org.apache.catalina.manager.ManagerServlet.doGet(ManagerServlet.java:371)
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:618)
+ at javax.servlet.http.HttpServlet.service(HttpServlet.java:725)
+...
+</code></pre></div>
+
+</blockquote></td></tr></table>
+
+<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="VM Info"><!--()--></a><a name="VM_Info"><strong>VM Info</strong></a></font></td></tr><tr><td><blockquote>
+
+<div class="codeBox"><pre><code>http://localhost:8080/manager/text/vminfo</code></pre></div>
+
+<p>Write some diagnostic information about Java Virtual Machine.</p>
+
+<p>The response will look something like this:</p>
+<div class="codeBox"><pre><code>OK - VM info
+2014-12-08 07:27:32.578
+Runtime information:
+ vmName: Java HotSpot(TM) Client VM
+ vmVersion: 25.25-b02
+ vmVendor: Oracle Corporation
+ specName: Java Virtual Machine Specification
+ specVersion: 1.8
+ specVendor: Oracle Corporation
+ managementSpecVersion: 1.2
+ name: ...
+ startTime: 1418012458849
+ uptime: 393855
+ isBootClassPathSupported: true
+
+OS information:
+...
+</code></pre></div>
+
+</blockquote></td></tr></table>
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Server Status"><!--()--></a><a name="Server_Status"><strong>Server Status</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>From the following links you can view Status information about the server.
+Any one of <strong>manager-xxx</strong> roles allows access to this page.</p>
+
+<div class="codeBox"><pre><code>http://localhost:8080/manager/status
+http://localhost:8080/manager/status/all</code></pre></div>
+
+<p>Displays server status information in HTML format.</p>
+
+<div class="codeBox"><pre><code>http://localhost:8080/manager/status?XML=true
+http://localhost:8080/manager/status/all?XML=true</code></pre></div>
+
+<p>Displays server status information in XML format.</p>
+
+<p>First, you have the server and JVM version number, JVM provider, OS name
and number followed by the architecture type.</p>
-<p>Second, there is several information about the memory usage of the JVM
-(available, total and max memory).</p>
+<p>Second, there is information about the memory usage of the JVM.</p>
-<p>Then, there is information about the Tomcat AJP and HTTP connectors.
+<p>Then, there is information about the Tomcat AJP and HTTP connectors.
The same information is available for both of them :
</p>
<ul>
- <li><p>Threads information : Max threads, min and max spare threads,
+ <li><p>Threads information : Max threads, min and max spare threads,
current thread count and current thread busy.</p></li>
- <li><p>Request information : Max processing time and processing time,
+ <li><p>Request information : Max processing time and processing time,
request and error count, bytes received and sent.</p></li>
- <li><p>A table showing Stage, Time, Bytes Sent, Bytes Receive, Client,
- VHost and Request. All existing threads are listed in the table.
+ <li><p>A table showing Stage, Time, Bytes Sent, Bytes Receive, Client,
+ VHost and Request. All existing threads are listed in the table.
Here is the list of the possible thread stages :</p>
<ul>
<li><p><em>"Parse and Prepare Request"</em> : The request headers are
@@ -915,7 +993,7 @@
appropriate.</p></li>
<li><p><em>"Keep-Alive"</em> : The thread keeps the connection open to
the client in case the client sends another request. If another request
- is recieved, the next stage will br "Parse and Prepare Requst". If no
+ is received, the next stage will be "Parse and Prepare Request". If no
request is received before the keep alive times out, the connection will
be closed and the next stage will be "Ready".</p></li>
<li><p><em>"Ready"</em> : The thread is at rest and ready to be
@@ -923,12 +1001,130 @@
</ul>
</li>
</ul>
-</blockquote></td></tr></table>
+
+<p>If you are using <code>/status/all</code> command, additional information
+on each of deployed web applications will be available.</p>
+
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMX Proxy Servlet"><!--()--></a><a name="Using_the_JMX_Proxy_Servlet"><strong>Using the JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is JMX Proxy Servlet"><!--()--></a><a name="What_is_JMX_Proxy_Servlet"><strong>What is JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>
+ The JMX Proxy Servlet is a lightweight proxy to get and set the
+ tomcat internals. (Or any class that has been exposed via an MBean)
+ Its usage is not very user friendly but the UI is
+ extremely helpful for integrating command line scripts for monitoring
+ and changing the internals of tomcat. You can do two things with the proxy:
+ get information and set information. For you to really understand the
+ JMX Proxy Servlet, you should have a general understanding of JMX.
+ If you don't know what JMX is, then prepare to be confused.
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Query command"><!--()--></a><a name="JMX_Query_command"><strong>JMX Query command</strong></a></font></td></tr><tr><td><blockquote>
+ <p>This takes the form:</p>
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?qry=STUFF</code></pre></div>
+ <p>Where <code>STUFF</code> is the JMX query you wish to perform. For example,
+ here are some queries you might wish to run:</p>
+ <ul>
+ <li>
+ <code>qry=*%3Atype%3DRequestProcessor%2C* -->
+ type=RequestProcessor</code> which will locate all
+ workers which can process requests and report
+ their state.
+ </li>
+ <li>
+ <code>qry=*%3Aj2eeType=Servlet%2c* -->
+ j2eeType=Servlet</code> which return all loaded servlets.
+ </li>
+ <li>
+ <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue -->
+ Catalina:type=Environment,resourcetype=Global,name=simpleValue</code>
+ which look for a specific MBean by the given name.
+ </li>
+ </ul>
+ <p>
+ You'll need to experiment with this to really understand its capabilities
+ If you provide no <code>qry</code> parameter, then all of the MBeans will
+ be displayed. We really recommend looking at the tomcat source code and
+ understand the JMX spec to get a better understanding of all the queries
+ you may run.
+ </p>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Get command"><!--()--></a><a name="JMX_Get_command"><strong>JMX Get command</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ The JXMProxyServlet also supports a "get" command that you can use to
+ fetch the value of a specific MBean's attribute. The general form of
+ the <code>get</code> command is:
+ </p>
+
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?get=BEANNAME&att=MYATTRIBUTE&key=MYKEY</code></pre></div>
+
+ <p>You must provide the following parameters:</p>
+ <ol>
+ <li><code>get</code>: The full bean name</li>
+ <li><code>att</code>: The attribute you wish to fetch</li>
+ <li><code>key</code>: (optional) The key into a CompositeData MBean attribute</li>
+ </ol>
+ <p>
+ If all goes well, then it will say OK, otherwise an error message will
+ be shown. For example, let's say we wish to fetch the current heap memory
+ data:
+ </p>
+
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?get=java.lang:type=Memory&att=HeapMemoryUsage</code></pre></div>
+
+ <p>Or, if you only want the "used" key:</p>
+
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/
+ ?get=java.lang:type=Memory&att=HeapMemoryUsage&key=used</code></pre></div>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Set command"><!--()--></a><a name="JMX_Set_command"><strong>JMX Set command</strong></a></font></td></tr><tr><td><blockquote>
+ <p>
+ Now that you can query an MBean, its time to muck with Tomcat's internals!
+ The general form of the set command is :
+ </p>
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/?set=BEANNAME&att=MYATTRIBUTE&val=NEWVALUE</code></pre></div>
+ <p>So you need to provide 3 request parameters:</p>
+ <ol>
+ <li><code>set</code>: The full bean name</li>
+ <li><code>att</code>: The attribute you wish to alter</li>
+ <li><code>val</code>: The new value </li>
+ </ol>
+ <p>
+ If all goes ok, then it will say OK, otherwise an error message will be
+ shown. For example, lets say we wish to turn up debugging on the fly for the
+ <code>ErrorReportValve</code>. The following will set debugging to 10.
+ </p>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/
+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
+ &att=debug&val=10</code></pre></div>
+ <p>and my result is (YMMV):</p>
+<div class="codeBox"><pre><code>Result: ok</code></pre></div>
+
+ <p>Here is what I see if I pass in a bad value. Here is the URL I used,
+ I try set debugging equal to 'cow':</p>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/
+ ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
+ &att=debug&val=cow</code></pre></div>
+ <p>When I try that, my result is</p>
+<div class="codeBox"><pre><code>Error: java.lang.NumberFormatException: For input string: "cow"</code></pre></div>
+ </blockquote></td></tr></table>
+
+ <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Invoke command"><!--()--></a><a name="JMX_Invoke_command"><strong>JMX Invoke command</strong></a></font></td></tr><tr><td><blockquote>
+ <p>The <code>invoke</code> command enables methods to be called on MBeans. The
+ general form of the command is:</p>
+<div class="codeBox"><pre><code>http://webserver/manager/jmxproxy/
+ ?invoke=BEANNAME&op=METHODNAME&ps=COMMASEPARATEDPARAMETERS</code></pre></div>
+ <p>For example, to call the <code>findConnectors()</code> method of the
+ <strong>Service</strong> use:</p>
+<div class="codeBox"><pre><code>http://localhost:8080/manager/jmxproxy/
+ ?invoke=Catalina%3Atype%3DService&op=findConnectors&ps=</code></pre></div>
+ </blockquote></td></tr></table>
</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Executing Manager Commands With Ant"><!--()--></a><a name="Executing_Manager_Commands_With_Ant"><strong>Executing Manager Commands With Ant</strong></a></font></td></tr><tr><td><blockquote>
<p>In addition to the ability to execute Manager commands via HTTP requests,
-as documented above, Tomcat 6 includes a convenient set of Task definitions
+as documented above, Tomcat includes a convenient set of Task definitions
for the <em>Ant</em> (version 1.4 or later) build tool. In order to use these
commands, you must perform the following setup operations:</p>
<ul>
@@ -937,22 +1133,17 @@
You must use version <strong>1.4</strong> or later.</li>
<li>Install the Ant distribution in a convenient directory (called
ANT_HOME in the remainder of these instructions).</li>
-<li>Copy the file <code>server/lib/catalina-ant.jar</code> from your Tomcat 6
- installation into Ant's library directory (<code>$ANT_HOME/lib</code>).
- </li>
<li>Add the <code>$ANT_HOME/bin</code> directory to your <code>PATH</code>
environment variable.</li>
<li>Configure at least one username/password combination in your Tomcat
user database that includes the <code>manager-script</code> role.</li>
</ul>
-<p>To use custom tasks within Ant, you must declare them first with a
-<code><taskdef></code> element. Therefore, your <code>build.xml</code>
+<p>To use custom tasks within Ant, you must declare them first with an
+<code><import></code> element. Therefore, your <code>build.xml</code>
file might look something like this:</p>
-<table border="1">
-<tr><td><pre>
-<project name="My Application" default="compile" basedir=".">
+<div class="codeBox"><pre><code><project name="My Application" default="compile" basedir=".">
<!-- Configure the directory into which the web application is built -->
<property name="build" value="${basedir}/build"/>
@@ -961,19 +1152,15 @@
<property name="path" value="/myapp"/>
<!-- Configure properties to access the Manager application -->
- <property name="url" value="http://localhost:8080/manager"/>
+ <property name="url" value="http://localhost:8080/manager/text"/>
<property name="username" value="myusername"/>
<property name="password" value="mypassword"/>
+ <!-- Configure the path to the Tomcat installation -->
+ <property name="catalina.home" value="/usr/local/apache-tomcat"/>
+
<!-- Configure the custom Ant tasks for the Manager application -->
- <taskdef name="deploy" classname="org.apache.catalina.ant.DeployTask"/>
- <taskdef name="list" classname="org.apache.catalina.ant.ListTask"/>
- <taskdef name="reload" classname="org.apache.catalina.ant.ReloadTask"/>
- <taskdef name="resources" classname="org.apache.catalina.ant.ResourcesTask"/>
- <taskdef name="roles" classname="org.apache.catalina.ant.RolesTask"/>
- <taskdef name="start" classname="org.apache.catalina.ant.StartTask"/>
- <taskdef name="stop" classname="org.apache.catalina.ant.StopTask"/>
- <taskdef name="undeploy" classname="org.apache.catalina.ant.UndeployTask"/>
+ <import file="${catalina.home}/bin/catalina-tasks.xml"/>
<!-- Executable Targets -->
<target name="compile" description="Compile web application">
@@ -998,13 +1185,12 @@
path="${path}"/>
</target>
-</project>
-</pre></td></tr>
-</table>
+</project></code></pre></div>
-<p>Note: The definition of the resources task above will override the resources
-datatype added in Ant 1.7. If you wish to use the resources datatype you will
-need to use Ant's namespace support to assign the Tomcat tasks to their own
+<p>Note: The definition of the resources task via the import above will override
+the resources datatype added in Ant 1.7. If you wish to use the resources
+datatype you will need to use Ant's namespace support to modify
+<code>catalina-tasks.xml</code> to assign the Tomcat tasks to their own
namespace.</p>
<p>Now, you can execute commands like <code>ant deploy</code> to deploy the
@@ -1015,97 +1201,92 @@
consider it a security risk to include the real manager password in your
<code>build.xml</code> file's source code. To avoid this, omit the password
property, and specify it from the command line:</p>
-<pre>
- ant -Dpassword=secret deploy
-</pre>
+<div class="codeBox"><pre><code>ant -Dpassword=secret deploy</code></pre></div>
<table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tasks output capture"><!--()--></a><a name="Tasks_output_capture"><strong>Tasks output capture</strong></a></font></td></tr><tr><td><blockquote>
<p>Using <em>Ant</em> version <strong>1.6.2</strong> or later,
-the Catalina tasks offer the option to capture their output in
-properties or external files. They support directly the following subset of the
+the Catalina tasks offer the option to capture their output in
+properties or external files. They support directly the following subset of the
<code><redirector></code> type attributes:
</p>
-<table border="1" cellpadding="2" cellspacing="0">
-<tbody>
+<table class="defaultTable">
<tr>
-<td valign="top"><b>Attribute</b></td>
-<td valign="top"><b>Description</b></td>
-<td align="center" valign="top"><b>Required</b></td>
+<th>Attribute</th>
+<th>Description</th>
+<th style="text-align: center;">Required</th>
</tr>
<tr>
-<td valign="top">output</td>
-<td valign="top">Name of a file to which to write the output. If
+<td>output</td>
+<td>Name of a file to which to write the output. If
the error stream is not also redirected to a file or property, it will
appear in this output.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">error</td>
-<td valign="top">The file to which the standard error of the
+<td>error</td>
+<td>The file to which the standard error of the
command should be redirected.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">logError</td>
-<td valign="top">This attribute is used when you wish to see
+<td>logError</td>
+<td>This attribute is used when you wish to see
error output in Ant's log and you are redirecting output to a
file/property. The error output will not be included in the output
file/property. If you redirect error with the <i>error</i> or <i>errorProperty</i>
attributes, this will have no effect.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">append</td>
-<td valign="top">Whether output and error files should be
+<td>append</td>
+<td>Whether output and error files should be
appended to or overwritten. Defaults to <code>false</code>.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">createemptyfiles</td>
-<td valign="top">Whether output and error files should be created
+<td>createemptyfiles</td>
+<td>Whether output and error files should be created
even when empty. Defaults to <code>true</code>.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">outputproperty</td>
-<td valign="top">The name of a property in which the output of
+<td>outputproperty</td>
+<td>The name of a property in which the output of
the command should be stored. Unless the error stream is redirected to
a separate file or stream, this property will include the error output.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">errorproperty</td>
-<td valign="top">The name of a property in which the standard
+<td>errorproperty</td>
+<td>The name of a property in which the standard
error of the command should be stored.</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
-</tbody>
</table>
<p>A couple of additional attributes can also be specified:
</p>
-<table border="1" cellpadding="2" cellspacing="0">
-<tbody>
+<table class="defaultTable">
<tr>
-<td valign="top"><b>Attribute</b></td>
-<td valign="top"><b>Description</b></td>
-<td align="center" valign="top"><b>Required</b></td>
+<th>Attribute</th>
+<th>Description</th>
+<th style="text-align: center;">Required</th>
</tr>
<tr>
-<td valign="top">alwaysLog</td>
-<td valign="top">This attribute is used when you wish to see the
+<td>alwaysLog</td>
+<td>This attribute is used when you wish to see the
output you are capturing, appearing also in the Ant's log. It must not be
used unless you are capturing task output.
Defaults to <code>false</code>.
<em>This attribute will be supported directly by <code><redirector></code>
in Ant 1.6.3</em></td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
<tr>
-<td valign="top">failonerror</td>
-<td valign="top">This attribute is used when you wish to avoid that
+<td>failonerror</td>
+<td>This attribute is used when you wish to avoid that
any manager command processing error terminates the ant execution. Defaults to <code>true</code>.
It must be set to <code>false</code>, if you want to capture error output,
otherwise execution will terminate before anything can be captured.
@@ -1113,17 +1294,16 @@
This attribute acts only on manager command execution,
any wrong or missing command attribute will still cause Ant execution termination.
</td>
-<td align="center" valign="top">No</td>
+<td style="text-align: center;">No</td>
</tr>
-</tbody>
</table>
<p>They also support the embedded <code><redirector></code> element
in which you can specify
-its full set of attributes, but <code>input</code>, <code>inputstring</code> and
+its full set of attributes, but <code>input</code>, <code>inputstring</code> and
<code>inputencoding</code> that, even if accepted, are not used because they have
no meaning in this context.
-Refer to <a href="http://ant.apache.org">ant manual</a> for details on
+Refer to <a href="http://ant.apache.org">ant manual</a> for details on
<code><redirector></code> element attributes.
</p>
@@ -1132,73 +1312,69 @@
can be used:
</p>
-<table border="1">
-<tr><td><pre>
- <target name="manager.deploy"
- depends="context.status"
- if="context.notInstalled">
- <deploy url="${mgr.url}"
- username="${mgr.username}"
- password="${mgr.password}"
- path="${mgr.context.path}"
- config="${mgr.context.descriptor}"/>
- </target>
+<div class="codeBox"><pre><code> <target name="manager.deploy"
+ depends="context.status"
+ if="context.notInstalled">
+ <deploy url="${mgr.url}"
+ username="${mgr.username}"
+ password="${mgr.password}"
+ path="${mgr.context.path}"
+ config="${mgr.context.descriptor}"/>
+ </target>
- <target name="manager.deploy.war"
- depends="context.status"
- if="context.deployable">
- <deploy url="${mgr.url}"
- username="${mgr.username}"
- password="${mgr.password}"
- update="${mgr.update}"
- path="${mgr.context.path}"
- war="${mgr.war.file}"/>
- </target>
-
- <target name="context.status">
- <property name="running" value="${mgr.context.path}:running"/>
- <property name="stopped" value="${mgr.context.path}:stopped"/>
-
- <list url="${mgr.url}"
- outputproperty="ctx.status"
- username="${mgr.username}"
- password="${mgr.password}">
- </list>
-
- <condition property="context.running">
- <contains string="${ctx.status}" substring="${running}"/>
- </condition>
- <condition property="context.stopped">
- <contains string="${ctx.status}" substring="${stopped}"/>
- </condition>
- <condition property="context.notInstalled">
- <and>
- <isfalse value="${context.running}"/>
- <isfalse value="${context.stopped}"/>
- </and>
- </condition>
- <condition property="context.deployable">
- <or>
- <istrue value="${context.notInstalled}"/>
- <and>
- <istrue value="${context.running}"/>
- <istrue value="${mgr.update}"/>
- </and>
- <and>
- <istrue value="${context.stopped}"/>
- <istrue value="${mgr.update}"/>
- </and>
- </or>
- </condition>
- <condition property="context.undeployable">
- <or>
- <istrue value="${context.running}"/>
- <istrue value="${context.stopped}"/>
- </or>
- </condition>
- </target>
-</pre></td></tr>
-</table>
+ <target name="manager.deploy.war"
+ depends="context.status"
+ if="context.deployable">
+ <deploy url="${mgr.url}"
+ username="${mgr.username}"
+ password="${mgr.password}"
+ update="${mgr.update}"
+ path="${mgr.context.path}"
+ war="${mgr.war.file}"/>
+ </target>
+
+ <target name="context.status">
+ <property name="running" value="${mgr.context.path}:running"/>
+ <property name="stopped" value="${mgr.context.path}:stopped"/>
+
+ <list url="${mgr.url}"
+ outputproperty="ctx.status"
+ username="${mgr.username}"
+ password="${mgr.password}">
+ </list>
+
+ <condition property="context.running">
+ <contains string="${ctx.status}" substring="${running}"/>
+ </condition>
+ <condition property="context.stopped">
+ <contains string="${ctx.status}" substring="${stopped}"/>
+ </condition>
+ <condition property="context.notInstalled">
+ <and>
+ <isfalse value="${context.running}"/>
+ <isfalse value="${context.stopped}"/>
+ </and>
+ </condition>
+ <condition property="context.deployable">
+ <or>
+ <istrue value="${context.notInstalled}"/>
+ <and>
+ <istrue value="${context.running}"/>
+ <istrue value="${mgr.update}"/>
+ </and>
+ <and>
+ <istrue value="${context.stopped}"/>
+ <istrue value="${mgr.update}"/>
+ </and>
+ </or>
+ </condition>
+ <condition property="context.undeployable">
+ <or>
+ <istrue value="${context.running}"/>
+ <istrue value="${context.stopped}"/>
+ </or>
+ </condition>
+ </target></code></pre></div>
<p><strong>WARNING:</strong> even if it doesn't make many sense, and is always a bad idea,
calling a Catalina task more than once,
@@ -1217,89 +1393,31 @@
</blockquote></td></tr></table>
-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Using the JMX Proxy Servlet"><!--()--></a><a name="Using_the_JMX_Proxy_Servlet"><strong>Using the JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>
-
- <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="What is JMX Proxy Servlet"><!--()--></a><a name="What_is_JMX_Proxy_Servlet"><strong>What is JMX Proxy Servlet</strong></a></font></td></tr><tr><td><blockquote>
- The JMX Proxy Servlet is a lightweight proxy to get and set the
- tomcat internals. (Or any class that has been exposed via an MBean)
- Its usage is not very user friendly but the UI is
- extremely help for integrating command line scripts for monitoring
- and changing the internals of tomcat. You can do two things with the proxy:
- get information and set information. For you to really understand the
- JMX Proxy Servlet, you should have a general understanding of JMX.
- If you don't know what JMX is, then prepare to be confused.
- </blockquote></td></tr></table>
-
- <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Query command"><!--()--></a><a name="JMX_Query_command"><strong>JMX Query command</strong></a></font></td></tr><tr><td><blockquote>
- This takes the form:
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://webserver/manager/jmxproxy/?qry=STUFF
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
- Where <code>STUFF</code> is the JMX query you wish to perform. For example,
- here are some queries you might wish to run:
- <ul>
- <li>
- <code>qry=*%3Atype%3DRequestProcessor%2C* -->
- type=RequestProcessor</code> which will locate all
- workers which can process requests and report
- their state.
- </li>
- <li>
- <code>qry=*%3Aj2eeType=Servlet%2c* -->
- j2eeType=Servlet</code> which return all loaded servlets.
- </li>
- <li>
- <code>qry=Catalina%3Atype%3DEnvironment%2Cresourcetype%3DGlobal%2Cname%3DsimpleValue -->
- Catalina:type=Environment,resourcetype=Global,name=simpleValue</code>
- which look for a specific MBean by the given name.
- </li>
- </ul>
- You'll need to experiment with this to really understand its capabilites.
- If you provide no <code>qry</code> parameter, then all of the MBeans will
- be displayed. We really recommend looking at the tomcat source code and
- understand the JMX spec to get a better understanding of all the queries
- you may run.
- </blockquote></td></tr></table>
-
- <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JMX Set command"><!--()--></a><a name="JMX_Set_command"><strong>JMX Set command</strong></a></font></td></tr><tr><td><blockquote>
- Now that you can query an MBean, its time to muck with Tomcat's internals!
- The general form of the set command is :
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://webserver/manager/jmxproxy/?set=BEANNAME&att=MYATTRIBUTE&val=NEWVALUE
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
- So you need to provide 3 request parameters:
- <ol>
- <li><code>set</code>: The full bean name</li>
- <li><code>att</code>: The attribute you wish to alter</li>
- <li><code>val</code>: The new value </li>
- </ol>
- If all goes ok, then it will say OK, otherwise an error message will be
- shown. For example, lets say we wish to turn up debugging on the fly for the
- <code>ErrorReportValve</code>. The following will set debugging to 10.
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/jmxproxy/
- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
- &att=debug&val=10
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
- and my result is (YMMV):
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-Result: ok
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
-
- Here is what I see if I pass in a bad value. Here is the URL I used,
- I try set debugging equal to 'cow':
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-http://localhost:8080/manager/jmxproxy/
- ?set=Catalina%3Atype%3DValve%2Cname%3DErrorReportValve%2Chost%3Dlocalhost
- &att=debug&val=cow
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
- When I try that, my result is
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-Error: java.lang.NumberFormatException: For input string: "cow"
-</pre></td><td bgcolor="#023264" width="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="./images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
- </blockquote></td></tr></table>
-
-
-</blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade="noshade" size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
- Copyright © 1999-2014, Apache Software Foundation
+</blockquote></td></tr></table></td></tr><tr class="noPrint"><td width="20%" valign="top" nowrap class="noPrint"></td><td width="80%" valign="top" align="left"><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="comments_section" id="comments_section"><strong>Comments</strong></a></font></td></tr><tr><td><blockquote><p class="notice"><strong>Notice: </strong>This comments section collects your suggestions
+ on improving documentation for Apache Tomcat.<br><br>
+ If you have trouble and need help, read
+ <a href="http://tomcat.apache.org/findhelp.html">Find Help</a> page
+ and ask your question on the tomcat-users
+ <a href="http://tomcat.apache.org/lists.html">mailing list</a>.
+ Do not ask such questions here. This is not a Q&A section.<br><br>
+ The Apache Comments System is explained <a href="./comments.html">here</a>.
+ Comments may be removed by our moderators if they are either
+ implemented or considered invalid/off-topic.</p><script type="text/javascript"><!--//--><![CDATA[//><!--
+ var comments_shortname = 'tomcat';
+ var comments_identifier = 'http://tomcat.apache.org/tomcat-7.0-doc/manager-howto.html';
+ (function(w, d) {
+ if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+ d.write('<div id="comments_thread"><\/div>');
+ var s = d.createElement('script');
+ s.type = 'text/javascript';
+ s.async = true;
+ s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+ (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+ }
+ else {
+ d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+ }
+ })(window, document);
+ //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+ Copyright © 1999-2017, Apache Software Foundation
</em></font></div></td></tr></table></body></html>
\ No newline at end of file