diff --git a/tomcat-uidm/webapps/docs/appdev/build.xml.txt b/tomcat-uidm/webapps/docs/appdev/build.xml.txt
index ffbb584..2162535 100644
--- a/tomcat-uidm/webapps/docs/appdev/build.xml.txt
+++ b/tomcat-uidm/webapps/docs/appdev/build.xml.txt
@@ -17,7 +17,7 @@
 
 <!--
      General purpose build script for web applications and web services,
-     including enhanced support for deploying directly to a Tomcat 6
+     including enhanced support for deploying directly to a Tomcat
      based server.
 
      This build script assumes that the source code of your web application
@@ -103,7 +103,7 @@
                        Defaults to "build".
 
   catalina.home        The directory in which you have installed
-                       a binary distribution of Tomcat 6.  This will
+                       a binary distribution of Tomcat.  This will
                        be used by the "deploy" target.
 
   dist.home            The name of the base directory in which
@@ -111,7 +111,7 @@
                        Defaults to "dist".
 
   manager.password     The login password of a user that is assigned the
-                       "manager" role (so that he or she can execute
+                       "manager-script" role (so that he or she can execute
                        commands via the "/manager" web application)
 
   manager.url          The URL of the "/manager" web application on the
@@ -119,7 +119,7 @@
                        applications and web services.
 
   manager.username     The login username of a user that is assigned the
-                       "manager" role (so that he or she can execute
+                       "manager-script" role (so that he or she can execute
                        commands via the "/manager" web application)
 
 -->
@@ -131,7 +131,7 @@
   <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
   <property name="dist.home"     value="${basedir}/dist"/>
   <property name="docs.home"     value="${basedir}/docs"/>
-  <property name="manager.url"   value="http://localhost:8080/manager"/>
+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>
   <property name="src.home"      value="${basedir}/src"/>
   <property name="web.home"      value="${basedir}/web"/>
 
@@ -148,7 +148,7 @@
   * Being copied into the "/WEB-INF/lib" directory during execution
     of the "deploy" target.
 
-  Because we will automatically include all of the Java classes that Tomcat 6
+  Because we will automatically include all of the Java classes that Tomcat
   exposes to web applications, we will not need to explicitly list any of those
   dependencies.  You only need to worry about external dependencies for JAR
   files that you are going to include inside your "/WEB-INF/lib" directory.
@@ -202,10 +202,10 @@
 <!--
 
   These properties define custom tasks for the Ant build tool that interact
-  with the "/manager" web application installed with Tomcat 6.  Before they
+  with the "/manager" web application installed with Tomcat.  Before they
   can be successfully utilized, you must perform the following steps:
 
-  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6
+  - Copy the file "lib/catalina-ant.jar" from your Tomcat
     installation into the "lib" directory of your Ant installation.
 
   - Create a "build.properties" file in your application's top-level
@@ -346,7 +346,7 @@
 
 <!--
 
-  The "install" target tells the specified Tomcat 6 installation to dynamically
+  The "install" target tells the specified Tomcat installation to dynamically
   install this web application and make it available for execution.  It does
   *not* cause the existence of this web application to be remembered across
   Tomcat restarts; if you restart the server, you will need to re-install all
@@ -404,7 +404,7 @@
 
 <!--
 
-  The "list" target asks the specified Tomcat 6 installation to list the
+  The "list" target asks the specified Tomcat installation to list the
   currently running web applications, either loaded at startup time or
   installed dynamically.  It is useful to determine whether or not the
   application you are currently developing has been installed.
@@ -464,7 +464,7 @@
 
 <!--
 
-  The "reload" signals the specified application Tomcat 6 to shut itself down
+  The "reload" signals the specified application Tomcat to shut itself down
   and reload. This can be useful when the web application context is not
   reloadable and you have updated classes or property files in the
   /WEB-INF/classes directory or when you have added or updated jar files in the
@@ -472,7 +472,7 @@
 
   NOTE: The /WEB-INF/web.xml web application configuration file is not reread
   on a reload. If you have made changes to your web.xml file you must stop
-  then start the web application. 
+  then start the web application.
 
 -->
 
@@ -491,7 +491,7 @@
 
 <!--
 
-  The "remove" target tells the specified Tomcat 6 installation to dynamically
+  The "remove" target tells the specified Tomcat installation to dynamically
   remove this web application from service.
 
   NOTE:  This is the logical opposite of the "install" target.
diff --git a/tomcat-uidm/webapps/docs/appdev/deployment.html b/tomcat-uidm/webapps/docs/appdev/deployment.html
index 560827e..c2d9abd 100644
--- a/tomcat-uidm/webapps/docs/appdev/deployment.html
+++ b/tomcat-uidm/webapps/docs/appdev/deployment.html
@@ -1,10 +1,85 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Deployment</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>Application Developer's Guide (7.0.77) - Deployment</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Deployment</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="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat_6">Deployment With Tomcat 6</a></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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Deployment</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
+<ul><li><a href="#Background">Background</a></li><li><a href="#Standard_Directory_Layout">Standard Directory Layout</a></li><li><a href="#Shared_Library_Files">Shared Library Files</a></li><li><a href="#Web_Application_Deployment_Descriptor">Web Application Deployment Descriptor</a></li><li><a href="#Tomcat_Context_Descriptor">Tomcat Context Descriptor</a></li><li><a href="#Deployment_With_Tomcat">Deployment With Tomcat</a></li></ul>
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Background"><strong>Background</strong></a></font></td></tr><tr><td><blockquote>
 
 <p>Before describing how to organize your source code directories,
@@ -71,8 +146,8 @@
     application, such as third party class libraries or JDBC drivers.</li>
 </ul>
 
-<p>When you install an application into Tomcat (or any other
-2.2/2.3-compatible server), the classes in the <code>WEB-INF/classes/</code>
+<p>When you install an application into Tomcat (or any other 2.2 or later
+Servlet container), the classes in the <code>WEB-INF/classes/</code>
 directory, as well as all classes in JAR files found in the
 <code>WEB-INF/lib/</code> directory, are made visible to other classes
 within your particular web application.  Thus, if
@@ -87,22 +162,22 @@
 
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Shared Library Files"><!--()--></a><a name="Shared_Library_Files"><strong>Shared Library Files</strong></a></font></td></tr><tr><td><blockquote>
 
-<p>Like most servlet containers, Tomcat 6 also supports mechanisms to install
+<p>Like most servlet containers, Tomcat also supports mechanisms to install
 library JAR files (or unpacked classes) once, and make them visible to all
 installed web applications (without having to be included inside the web
 application itself).  The details of how Tomcat locates and shares such
 classes are described in the
 <a href="../class-loader-howto.html">Class Loader HOW-TO</a> documentation.
-The location commonly used within a Tomcat 6 installation for shared code is
+The location commonly used within a Tomcat installation for shared code is
 <strong>$CATALINA_HOME/lib</strong>. JAR files placed here are visible both to
 web applications and internal Tomcat code. This is a good place to put JDBC
 drivers that are required for both your application or internal Tomcat use
 (such as for a JDBCRealm).</p>
 
-<p>Out of the box, a standard Tomcat 6 installation includes a variety
+<p>Out of the box, a standard Tomcat installation includes a variety
 of pre-installed shared library files, including:</p>
 <ul>
-<li>The <em>Servlet 2.5</em> and <em>JSP 2.1</em> APIs that are fundamental
+<li>The <em>Servlet 3.0</em> and <em>JSP 2.2</em> APIs that are fundamental
     to writing servlets and JavaServer Pages.<br><br></li>
 </ul>
 
@@ -125,7 +200,7 @@
 
 <p><strong>NOTE</strong> - The Servlet Specification includes a Document
 Type Descriptor (DTD) for the web application deployment descriptor, and
-Tomcat 6 enforces the rules defined here when processing your application's
+Tomcat enforces the rules defined here when processing your application's
 <code>/WEB-INF/web.xml</code> file.  In particular, you <strong>must</strong>
 enter your descriptor elements (such as <code>&lt;filter&gt;</code>,
 <code>&lt;servlet&gt;</code>, and <code>&lt;servlet-mapping&gt;</code> in
@@ -138,22 +213,20 @@
 configuration and more. This XML file must contain one Context element, which
 will be considered as if it was the child of the Host element corresponding
 to the Host to which the web application is being deployed. The
-<a href="../config/index.html">Tomcat configuration documentation</a> contains
+<a href="../config/context.html">Tomcat configuration documentation</a> contains
 information on the Context element.</p>
 
-</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment With Tomcat 6"><!--()--></a><a name="Deployment_With_Tomcat_6"><strong>Deployment With Tomcat 6</strong></a></font></td></tr><tr><td><blockquote>
+</blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Deployment With Tomcat"><!--()--></a><a name="Deployment_With_Tomcat"><strong>Deployment With Tomcat</strong></a></font></td></tr><tr><td><blockquote>
 
-    <blockquote><em>
-    <p>The description below uses the variable name $CATALINA_BASE to refer the
+    <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.</p>
-    </em></blockquote>
+    the directory into which you have installed Tomcat.</em></p>
 
 <p>In order to be executed, a web application must be deployed on
 a servlet container.  This is true even during development.
-We will describe using Tomcat 6 to provide the execution environment.
+We will describe using Tomcat to provide the execution environment.
 A web application can be deployed in Tomcat by one of the following
 approaches:</p>
 <ul>
@@ -177,18 +250,18 @@
     directory that Tomcat created, and then restart Tomcat, in order to reflect
     your changes.
     <br><br></li>
-<li><em>Use the Tomcat 6 "Manager" web application to deploy and undeploy
-    web applications</em>.  Tomcat 6 includes a web application, deployed
+<li><em>Use the Tomcat "Manager" web application to deploy and undeploy
+    web applications</em>.  Tomcat includes a web application, deployed
     by default on context path <code>/manager</code>, that allows you to
     deploy and undeploy applications on a running Tomcat server without
-    restarting it.  See the administrator documentation (TODO: hyperlink)
+    restarting it. See <a href="../manager-howto.html">Manager App HOW-TO</a>
     for more information on using the Manager web application.<br><br></li>
-<li><em>Use "Manager" Ant Tasks In Your Build Script</em>.  Tomcat 6
+<li><em>Use "Manager" Ant Tasks In Your Build Script</em>.  Tomcat
     includes a set of custom task definitions for the <code>Ant</code>
     build tool that allow you to automate the execution of commands to the
     "Manager" web application.  These tasks are used in the Tomcat deployer.
     <br><br></li>
-<li><em>Use the Tomcat Deployer</em>.  Tomcat 6 includes a packaged tool
+<li><em>Use the Tomcat Deployer</em>.  Tomcat includes a packaged tool
     bundling the Ant tasks, and can be used to automatically precompile JSPs
     which are part of the web application before deployment to the server.
     <br><br></li>
@@ -201,6 +274,31 @@
 unpacked directory structure (as Tomcat does), or to provide mechanisms for
 shared library files, but these features are commonly available.</p>
 
-</blockquote></td></tr></table></td></tr><!--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 &copy; 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&amp;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/appdev/deployment.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/index.html b/tomcat-uidm/webapps/docs/appdev/index.html
index c811554..6a1990e 100644
--- a/tomcat-uidm/webapps/docs/appdev/index.html
+++ b/tomcat-uidm/webapps/docs/appdev/index.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
-			.noPrint {display: none;}
-			td#mainBody {width: 100%;}
-		</style></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>Application Developer's Guide (7.0.77) - Table of Contents</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Table of Contents</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>
+    " 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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Table of Contents</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Preface"><strong>Preface</strong></a></font></td></tr><tr><td><blockquote>
 
 <p>This manual includes contributions from many members of the Tomcat Project
 developer community.  The following authors have provided significant content:
@@ -42,6 +117,31 @@
     practice using the described techniques.</li>
 </ul>
 
-</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 &copy; 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&amp;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/appdev/index.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/installation.html b/tomcat-uidm/webapps/docs/appdev/installation.html
index 70aaf8e..eb8023e 100644
--- a/tomcat-uidm/webapps/docs/appdev/installation.html
+++ b/tomcat-uidm/webapps/docs/appdev/installation.html
@@ -1,36 +1,111 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
-			.noPrint {display: none;}
-			td#mainBody {width: 100%;}
-		</style></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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Installation</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
+<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (7.0.77) - Installation</title><meta name="author" content="Craig R. McClanahan"><meta name="author" content="Yoav Shapira"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
 
-<p>In order to use Tomcat 6 for developing web applications, you must first
+
+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 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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Installation</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Installation"><strong>Installation</strong></a></font></td></tr><tr><td><blockquote>
+
+<p>In order to use Tomcat for developing web applications, you must first
 install it (and the software it depends on).  The required steps are outlined
 in the following subsections.</p>
 
 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="JDK"><strong>JDK</strong></a></font></td></tr><tr><td><blockquote>
 
-<p>Tomcat 6.0 was designed to run on J2SE 5.0.
+<p>Tomcat 7.0 was designed to run on Java SE 6.
 </p>
 
 <p>Compatible JDKs for many platforms (or links to where they can be found)
 are available at
-<a href="http://java.sun.com/j2se/">http://java.sun.com/j2se/</a>.</p>
+<a href="http://www.oracle.com/technetwork/java/javase/downloads/index.html">http://www.oracle.com/technetwork/java/javase/downloads/index.html</a>.</p>
 
 </blockquote></td></tr></table>
 
 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Tomcat"><strong>Tomcat</strong></a></font></td></tr><tr><td><blockquote>
 
 <p>Binary downloads of the <strong>Tomcat</strong> server are available from
-<a href="http://tomcat.apache.org/download-60.cgi">http://tomcat.apache.org/download-60.cgi</a>.
+<a href="http://tomcat.apache.org/">http://tomcat.apache.org/</a>.
 This manual assumes you are using the most recent release
-of Tomcat 6.  Detailed instructions for downloading and installing
-Tomcat 6 are available <a href="../setup.html">here</a>.</p>
+of Tomcat 7.  Detailed instructions for downloading and installing
+Tomcat are available <a href="../setup.html">here</a>.</p>
 
 <p>In the remainder of this manual, example shell scripts assume that you have
 set an environment variable <code>CATALINA_HOME</code> that contains the
-pathname to the directory in which Tomcat 6 has been installed. Optionally, if
+pathname to the directory in which Tomcat has been installed. Optionally, if
 Tomcat has been configured for multiple instances, each instance will have its
 own <code>CATALINA_BASE</code> configured.</p>
 
@@ -40,11 +115,11 @@
 <table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#828DA6"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Ant"><strong>Ant</strong></a></font></td></tr><tr><td><blockquote>
 
 <p>Binary downloads of the <strong>Ant</strong> build tool are available from
-<a href="http://ant.apache.org/bindownload.cgi">http://ant.apache.org/bindownload.cgi</a>.
-This manual assumes you are using Ant 1.4 or later.  The instructions should
-also be compatible with later versions, but this has not been tested.</p>
+<a href="http://ant.apache.org/">http://ant.apache.org/</a>.
+This manual assumes you are using Ant 1.8 or later.  The instructions may
+also be compatible with other versions, but this has not been tested.</p>
 
-<p>Download and install Ant from the distribution directory mentioned above.
+<p>Download and install Ant.
 Then, add the <code>bin</code> directory of the Ant distribution to your
 <code>PATH</code> environment variable, following the standard practices for
 your operating system platform.  Once you have done this, you will be able to
@@ -65,11 +140,36 @@
 <p>Detailed instructions for installing and using source code control
 applications is beyond the scope of this manual.  However, CVS server and
 client tools for many platforms (along with documentation) can be downloaded
-from <a href="http://www.cvshome.org">http://www.cvshome.org</a>.</p>
+from <a href="http://www.cvshome.org/">http://www.cvshome.org/</a>.</p>
 
 </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 &copy; 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&amp;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/appdev/installation.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/introduction.html b/tomcat-uidm/webapps/docs/appdev/introduction.html
index 4038ed6..9de59cb 100644
--- a/tomcat-uidm/webapps/docs/appdev/introduction.html
+++ b/tomcat-uidm/webapps/docs/appdev/introduction.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Introduction</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>Application Developer's Guide (7.0.77) - Introduction</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Introduction</h2><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
+    " 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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Introduction</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Overview"><strong>Overview</strong></a></font></td></tr><tr><td><blockquote>
 
 <p>Congratulations!  You've decided to (or been told to) learn how to
 build web applications using servlets and JSP pages, and picked the
@@ -20,7 +95,7 @@
 
 <p>The discussion in this manual is aimed at developers who will be using
 a text editor along with command line tools to develop and debug their
-applications.  As such, the recommendations are fairly generic -- but you
+applications.  As such, the recommendations are fairly generic &ndash; but you
 should easily be able to apply them in either a Windows-based or Unix-based
 development environment.  If you are utilizing an Integrated Development
 Environment (IDE) tool, you will need to adapt the advice given here to
@@ -32,8 +107,8 @@
 information, documentation, and software that is useful in developing
 web applications with Tomcat.</p>
 <ul>
-<li><a href="http://jcp.org/aboutJava/communityprocess/final/jsr245/index.html">http://jcp.org/aboutJava/communityprocess/final/jsr245/</a> -
-    <i>JavaServer Pages (JSP) Specification, Version 2.1</i>.  Describes
+<li><p><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr245/index.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr245/</a> -
+    <i>JavaServer Pages (JSP) Specification, Version 2.2</i>.  Describes
     the programming environment provided by standard implementations
     of the JavaServer Pages (JSP) technology.  In conjunction with
     the Servlet API Specification (see below), this document describes
@@ -41,20 +116,45 @@
     information on scripting (Chapter 9), tag extensions (Chapter 7),
     and packaging JSP pages (Appendix A) is useful.  The Javadoc
     API Documentation is included in the specification, and with the
-    Tomcat download.<br><br></li>
-<li><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr154/index2.html</a> -
-    <i>Servlet API Specification, Version 2.5</i>.  Describes the
+    Tomcat download.</p></li>
+<li><p><a href="http://jcp.org/aboutJava/communityprocess/mrel/jsr315/index.html">http://jcp.org/aboutJava/communityprocess/mrel/jsr315/</a> -
+    <i>Servlet API Specification, Version 3.0</i>.  Describes the
     programming environment that must be provided by all servlet
     containers conforming to this specification.  In particular, you
     will need this document to understand the web application
-    directory structure and deployment file (Chapter 9), methods of
-    mapping request URIs to servlets (Chapter 11), container managed
-    security (Chapter 12), and the syntax of the <code>web.xml</code>
-    Web Application Deployment Descriptor (Chapter 13).  The Javadoc
+    directory structure and deployment file (Chapter 10), methods of
+    mapping request URIs to servlets (Chapter 12), container managed
+    security (Chapter 13), and the syntax of the <code>web.xml</code>
+    Web Application Deployment Descriptor (Chapter 14).  The Javadoc
     API Documentation is included in the specification, and with the
-    Tomcat download.<br><br></li>
+    Tomcat download.</p></li>
 </ul>
 
-</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 &copy; 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&amp;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/appdev/introduction.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/processes.html b/tomcat-uidm/webapps/docs/appdev/processes.html
index 1501f65..0e1cf79 100644
--- a/tomcat-uidm/webapps/docs/appdev/processes.html
+++ b/tomcat-uidm/webapps/docs/appdev/processes.html
@@ -1,9 +1,84 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Development Processes</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>Application Developer's Guide (7.0.77) - Development Processes</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Development Processes</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>
+    " 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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Development Processes</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
 <ul><li><a href="#Development_Processes">Development Processes</a><ol><li><a href="#One-Time_Setup_of_Ant_and_Tomcat_for_Development">One-Time Setup of Ant and Tomcat for Development</a></li><li><a href="#Create_Project_Source_Code_Directory">Create Project Source Code Directory</a></li><li><a href="#Edit_Source_Code_and_Pages">Edit Source Code and Pages</a></li><li><a href="#Build_the_Web_Application">Build the Web Application</a></li><li><a href="#Test_Your_Web_Application">Test Your Web Application</a></li><li><a href="#Creating_a_Release">Creating a Release</a></li></ol></li></ul>
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Development Processes"><!--()--></a><a name="Development_Processes"><strong>Development Processes</strong></a></font></td></tr><tr><td><blockquote>
 
@@ -28,20 +103,20 @@
 <em>Manager</em> web application, you need to perform the following tasks
 once (no matter how many web applications you plan to develop).</p>
 <ul>
-<li><em>Configure the Ant custom tasks</em>.  The implementation code for the
+<li><p><em>Configure the Ant custom tasks</em>.  The implementation code for the
     Ant custom tasks is in a JAR file named
     <code>$CATALINA_HOME/lib/catalina-ant.jar</code>, which must be
     copied in to the <code>lib</code> directory of your Ant installation.
-    <br><br></li>
-<li><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web
+    </p></li>
+<li><p><em>Define one or more Tomcat users</em>.  The <em>Manager</em> web
     application runs under a security constraint that requires a user to be
-    logged in, and have the security role <code>manager</code> assigned to
-    him or her.  How such users are defined depends on which Realm you have
+    logged in, and have the security role <code>manager-script</code> assigned
+    to him or her.  How such users are defined depends on which Realm you have
     configured in Tomcat's <code>conf/server.xml</code> file -- see the
     <a href="../realm-howto.html">Realm Configuration HOW-TO</a> for more
     information.  You may define any number of users (with any username
-    and password that you like) with the <code>manager</code> role.
-    <br><br></li>
+    and password that you like) with the <code>manager-script</code> role.
+    </p></li>
 </ul>
 
 </blockquote></td></tr></table>
@@ -59,38 +134,32 @@
 repository.  This might be done by a series of commands like this, where
 <code>{project}</code> is the name under which your project should be
 stored in the CVS repository, and {username} is your login username:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
-mkdir myapp	&lt;-- Assumed "project source directory"
+<div class="codeBox"><pre><code>cd {my home directory}
+mkdir myapp &lt;-- Assumed "project source directory"
 cd myapp
 mkdir docs
 mkdir src
 mkdir web
 mkdir web/WEB-INF
 cvs import -m "Initial Project Creation" {project} \
-	{username} start
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+    {username} start</code></pre></div>
 
 <p>Now, to verify that it was created correctly in CVS, we will perform a
 checkout of the new project:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd ..
+<div class="codeBox"><pre><code>cd ..
 mv myapp myapp.bu
-cvs checkout {project}
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+cvs checkout {project}</code></pre></div>
 
 <p>Next, you will need to create and check in an initial version of the
 <code>build.xml</code> script to be used for development.  For getting
 started quickly and easily, base your <code>build.xml</code> on the
 <a href="build.xml.txt">basic build.xml file</a>, included with this manual,
 or code it from scratch.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
+<div class="codeBox"><pre><code>cd {my home directory}
 cd myapp
-emacs build.xml		&lt;-- if you want a real editor :-)
+emacs build.xml     &lt;-- if you want a real editor :-)
 cvs add build.xml
-cvs commit
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+cvs commit</code></pre></div>
 
 <p>Until you perform the CVS commit, your changes are local to your own
 development directory.  Committing makes those changes visible to other
@@ -102,19 +171,17 @@
 directory.  The supported properties are listed in the comments inside
 the sample <code>build.xml</code> script.  At a minimum, you will generally
 need to define the <code>catalina.home</code> property defining where
-Tomcat 6 is installed, and the manager application username and password.
+Tomcat is installed, and the manager application username and password.
 You might end up with something like this:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-# Context path to install this application on
+<div class="codeBox"><pre><code># Context path to install this application on
 app.path=/hello
 
-# Tomcat 6 installation directory
-catalina.home=/usr/local/apache-tomcat-6.0
+# Tomcat 7 installation directory
+catalina.home=/usr/local/apache-tomcat-7.0
 
 # Manager webapp username and password
 manager.username=myusername
-manager.password=mypassword
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+manager.password=mypassword</code></pre></div>
 
 <p>In general, you will <strong>not</strong> want to check the
 <code>build.properties</code> file in to the CVS repository, because it
@@ -123,13 +190,11 @@
 <p>Now, create the initial version of the web application deployment
 descriptor.  You can base <code>web.xml</code> on the
 <a href="web.xml.txt">basic web.xml file</a>, or code it from scratch.</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
+<div class="codeBox"><pre><code>cd {my home directory}
 cd myapp/web/WEB-INF
 emacs web.xml
 cvs add web.xml
-cvs commit
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+cvs commit</code></pre></div>
 
 Note that this is only an example web.xml file.  The full definition
 of the deployment descriptor file is in the
@@ -148,24 +213,20 @@
 
 <p>Whenever you wish to refresh your development directory to reflect the
 work performed by other developers, you will ask CVS to do it for you:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
+<div class="codeBox"><pre><code>cd {my home directory}
 cd myapp
-cvs update -dP
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+cvs update -dP</code></pre></div>
 
 <p>To create a new file, go to the appropriate directory, create the file,
 and register it with CVS.  When you are satisfied with it's contents (after
 building and testing is successful), commit the new file to the repository.
 For example, to create a new JSP page:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
-cd myapp/web		&lt;-- Ultimate destination is document root
+<div class="codeBox"><pre><code>cd {my home directory}
+cd myapp/web        &lt;-- Ultimate destination is document root
 emacs mypage.jsp
 cvs add mypage.jsp
 ... build and test the application ...
-cvs commit
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+cvs commit</code></pre></div>
 
 <p>Java source code that is defined in packages must be organized in a
 directory hierarchy (under the <strong>src/</strong> subdirectory) that
@@ -188,11 +249,9 @@
 <p>When you are ready to compile the application, issue the following
 commands (generally, you will want a shell window open that is set to
 the project source directory, so that only the last command is needed):</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
-cd myapp		&lt;-- Normally leave a window open here
-ant
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>cd {my home directory}
+cd myapp        &lt;-- Normally leave a window open here
+ant</code></pre></div>
 
 <p>The Ant tool will be execute the default "compile" target in your
 <code>build.xml</code> file, which will compile any new or updated Java
@@ -200,11 +259,9 @@
 it will cause everything to be recompiled.</p>
 
 <p>To force the recompilation of your entire application, do this instead:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-cd {my home directory}
+<div class="codeBox"><pre><code>cd {my home directory}
 cd myapp
-ant all
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+ant all</code></pre></div>
 
 <p>This is a very good habit immediately before checking in changes, to
 make sure that you have not introduced any subtle problems that Javac's
@@ -220,36 +277,38 @@
 the sample <code>build.xml</code> script.  Using these commands might follow
 a pattern like this:</p>
 <ul>
-<li><em>Start Tomcat 6 if needed</em>.  If Tomcat 6 is not already running,
+<li><p><em>Start Tomcat if needed</em>.  If Tomcat is not already running,
     you will need to start it in the usual way.
-    <br><br></li>
-<li><em>Compile your application</em>.  Use the <code>ant compile</code>
+    </p></li>
+<li><p><em>Compile your application</em>.  Use the <code>ant compile</code>
     command (or just <code>ant</code>, since this is the default).  Make
     sure that there are no compilation errors.
-    <br><br></li>
-<li><em>Install the application</em>.  Use the <code>ant install</code>
+    </p></li>
+<li><p><em>Install the application</em>.  Use the <code>ant install</code>
     command.  This tells Tomcat to immediately start running your app on
     the context path defined in the <code>app.path</code> build property.
     Tomcat does <strong>NOT</strong> have to be restarted for this to
-    take effect.<br><br></li>
-<li><em>Test the application</em>.  Using your browser or other testing
+    take effect.
+    </p></li>
+<li><p><em>Test the application</em>.  Using your browser or other testing
     tools, test the functionality of your application.
-    <br><br></li>
-<li><em>Modify and rebuild as needed</em>.  As you discover that changes
+    </p></li>
+<li><p><em>Modify and rebuild as needed</em>.  As you discover that changes
     are required, make those changes in the original <strong>source</strong>
     files, not in the output build directory, and re-issue the
     <code>ant compile</code> command.  This ensures that your changes will
     be available to be saved (via <code>cvs commit</code>) later on --
     the output build directory is deleted and recreated as necessary.
-    <br><br></li>
-<li><em>Reload the application</em>.  Tomcat will recognize changes in
+    </p></li>
+<li><p><em>Reload the application</em>.  Tomcat will recognize changes in
     JSP pages automatically, but it will continue to use the old versions
     of any servlet or JavaBean classes until the application is reloaded.
     You can trigger this by executing the <code>ant reload</code> command.
-    <br><br></li>
-<li><em>Remove the application when you re done</em>.  When you are through
+    </p></li>
+<li><p><em>Remove the application when you are done</em>.  When you are through
     working on this application, you can remove it from live execution by
-    running the <code>ant remove</code> command.</li>
+    running the <code>ant remove</code> command.
+    </p></li>
 </ul>
 
 <p>Do not forget to commit your changes to the source code repository when
@@ -265,25 +324,52 @@
 of your web application that can be deployed on the production server.  The
 following general steps are required:</p>
 <ul>
-<li>Issue the command <code>ant all</code> from the project source
+<li><p>Issue the command <code>ant all</code> from the project source
     directory, to rebuild everything from scratch one last time.
-    <br><br></li>
-<li>Use the <code>cvs tag</code> command to create an identifier for
+    </p></li>
+<li><p>Use the <code>cvs tag</code> command to create an identifier for
     all of the source files utilized to create this release.  This allows
     you to reliably reconstruct a release (from sources) at a later
-    time.</li>
-<li>Issue the command <code>ant dist</code> to create a distributable
+    time.
+    </p></li>
+<li><p>Issue the command <code>ant dist</code> to create a distributable
     web application archive (WAR) file, as well as a JAR file containing
     the corresponding source code.
-    <br><br></li>
-<li>Package the contents of the <code>dist</code> directory using the
+    </p></li>
+<li><p>Package the contents of the <code>dist</code> directory using the
     <strong>tar</strong> or <strong>zip</strong> utility, according to
-    the standard release procedures used by your organization.</li>
+    the standard release procedures used by your organization.
+    </p></li>
 </ul>
 
 </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 &copy; 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&amp;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/appdev/processes.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/build.xml b/tomcat-uidm/webapps/docs/appdev/sample/build.xml
index ffbb584..2162535 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/build.xml
+++ b/tomcat-uidm/webapps/docs/appdev/sample/build.xml
@@ -17,7 +17,7 @@
 
 <!--
      General purpose build script for web applications and web services,
-     including enhanced support for deploying directly to a Tomcat 6
+     including enhanced support for deploying directly to a Tomcat
      based server.
 
      This build script assumes that the source code of your web application
@@ -103,7 +103,7 @@
                        Defaults to "build".
 
   catalina.home        The directory in which you have installed
-                       a binary distribution of Tomcat 6.  This will
+                       a binary distribution of Tomcat.  This will
                        be used by the "deploy" target.
 
   dist.home            The name of the base directory in which
@@ -111,7 +111,7 @@
                        Defaults to "dist".
 
   manager.password     The login password of a user that is assigned the
-                       "manager" role (so that he or she can execute
+                       "manager-script" role (so that he or she can execute
                        commands via the "/manager" web application)
 
   manager.url          The URL of the "/manager" web application on the
@@ -119,7 +119,7 @@
                        applications and web services.
 
   manager.username     The login username of a user that is assigned the
-                       "manager" role (so that he or she can execute
+                       "manager-script" role (so that he or she can execute
                        commands via the "/manager" web application)
 
 -->
@@ -131,7 +131,7 @@
   <property name="catalina.home" value="../../../.."/> <!-- UPDATE THIS! -->
   <property name="dist.home"     value="${basedir}/dist"/>
   <property name="docs.home"     value="${basedir}/docs"/>
-  <property name="manager.url"   value="http://localhost:8080/manager"/>
+  <property name="manager.url"   value="http://localhost:8080/manager/text"/>
   <property name="src.home"      value="${basedir}/src"/>
   <property name="web.home"      value="${basedir}/web"/>
 
@@ -148,7 +148,7 @@
   * Being copied into the "/WEB-INF/lib" directory during execution
     of the "deploy" target.
 
-  Because we will automatically include all of the Java classes that Tomcat 6
+  Because we will automatically include all of the Java classes that Tomcat
   exposes to web applications, we will not need to explicitly list any of those
   dependencies.  You only need to worry about external dependencies for JAR
   files that you are going to include inside your "/WEB-INF/lib" directory.
@@ -202,10 +202,10 @@
 <!--
 
   These properties define custom tasks for the Ant build tool that interact
-  with the "/manager" web application installed with Tomcat 6.  Before they
+  with the "/manager" web application installed with Tomcat.  Before they
   can be successfully utilized, you must perform the following steps:
 
-  - Copy the file "lib/catalina-ant.jar" from your Tomcat 6
+  - Copy the file "lib/catalina-ant.jar" from your Tomcat
     installation into the "lib" directory of your Ant installation.
 
   - Create a "build.properties" file in your application's top-level
@@ -346,7 +346,7 @@
 
 <!--
 
-  The "install" target tells the specified Tomcat 6 installation to dynamically
+  The "install" target tells the specified Tomcat installation to dynamically
   install this web application and make it available for execution.  It does
   *not* cause the existence of this web application to be remembered across
   Tomcat restarts; if you restart the server, you will need to re-install all
@@ -404,7 +404,7 @@
 
 <!--
 
-  The "list" target asks the specified Tomcat 6 installation to list the
+  The "list" target asks the specified Tomcat installation to list the
   currently running web applications, either loaded at startup time or
   installed dynamically.  It is useful to determine whether or not the
   application you are currently developing has been installed.
@@ -464,7 +464,7 @@
 
 <!--
 
-  The "reload" signals the specified application Tomcat 6 to shut itself down
+  The "reload" signals the specified application Tomcat to shut itself down
   and reload. This can be useful when the web application context is not
   reloadable and you have updated classes or property files in the
   /WEB-INF/classes directory or when you have added or updated jar files in the
@@ -472,7 +472,7 @@
 
   NOTE: The /WEB-INF/web.xml web application configuration file is not reread
   on a reload. If you have made changes to your web.xml file you must stop
-  then start the web application. 
+  then start the web application.
 
 -->
 
@@ -491,7 +491,7 @@
 
 <!--
 
-  The "remove" target tells the specified Tomcat 6 installation to dynamically
+  The "remove" target tells the specified Tomcat installation to dynamically
   remove this web application from service.
 
   NOTE:  This is the logical opposite of the "install" target.
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/index.html b/tomcat-uidm/webapps/docs/appdev/sample/index.html
index 87e3a61..a3db667 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/index.html
+++ b/tomcat-uidm/webapps/docs/appdev/sample/index.html
@@ -21,26 +21,26 @@
 </head>
 <body>
 <h2>Sample Application</h2>
-      <p> 
-        The example app has been packaged as a war file and can be downloaded 
-        <a href="sample.war">here</a> (Note: make sure your browser doesn't 
+      <p>
+        The example app has been packaged as a war file and can be downloaded
+        <a href="sample.war">here</a> (Note: make sure your browser doesn't
         change file extension or append a new one).
       </p>
-      <p> 
-        The easiest way to run this application is simply to move the war file 
-        to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically 
-        expand and deploy the application for you. You can view it with the 
-        following URL (assuming that you're running tomcat on port 8080 
+      <p>
+        The easiest way to run this application is simply to move the war file
+        to your <b>CATALINA_HOME/webapps</b> directory. Tomcat will automatically
+        expand and deploy the application for you. You can view it with the
+        following URL (assuming that you're running tomcat on port 8080
         as is the default):
         <br />
         <a href="http://localhost:8080/sample">http://localhost:8080/sample</a>
       </p>
       <p>
-        If you just want to browse the contents, you can unpack the war file 
+        If you just want to browse the contents, you can unpack the war file
         with the <b>jar</b> command.
-        <source>
-          jar -xvf sample.war
-        </source>
       </p>
+      <pre>
+        jar -xvf sample.war
+      </pre>
 </body>
 </html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/src/mypackage/Hello.java b/tomcat-uidm/webapps/docs/appdev/sample/src/mypackage/Hello.java
index 8c79077..47bba7c 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/src/mypackage/Hello.java
+++ b/tomcat-uidm/webapps/docs/appdev/sample/src/mypackage/Hello.java
@@ -5,21 +5,20 @@
  * The ASF licenses this file to You under the Apache License, Version 2.0
  * (the "License"); you may not use this file except in compliance with
  * the License.  You may obtain a copy of the License at
- * 
+ *
  *      http://www.apache.org/licenses/LICENSE-2.0
- * 
+ *
  * Unless required by applicable law or agreed to in writing, software
  * distributed under the License is distributed on an "AS IS" BASIS,
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  * See the License for the specific language governing permissions and
  * limitations under the License.
  */
-
 package mypackage;
 
 import java.io.IOException;
 import java.io.PrintWriter;
-import java.util.Enumeration;
+
 import javax.servlet.ServletException;
 import javax.servlet.http.HttpServlet;
 import javax.servlet.http.HttpServletRequest;
@@ -37,6 +36,7 @@
 
 public final class Hello extends HttpServlet {
 
+    private static final long serialVersionUID = 1L;
 
     /**
      * Respond to a GET request for the content produced by
@@ -48,34 +48,35 @@
      * @exception IOException if an input/output error occurs
      * @exception ServletException if a servlet error occurs
      */
+    @Override
     public void doGet(HttpServletRequest request,
                       HttpServletResponse response)
       throws IOException, ServletException {
 
-	response.setContentType("text/html");
-	PrintWriter writer = response.getWriter();
+        response.setContentType("text/html");
+        PrintWriter writer = response.getWriter();
 
-	writer.println("<html>");
-	writer.println("<head>");
-	writer.println("<title>Sample Application Servlet Page</title>");
-	writer.println("</head>");
-	writer.println("<body bgcolor=white>");
+        writer.println("<html>");
+        writer.println("<head>");
+        writer.println("<title>Sample Application Servlet Page</title>");
+        writer.println("</head>");
+        writer.println("<body bgcolor=white>");
 
-	writer.println("<table border=\"0\">");
-	writer.println("<tr>");
-	writer.println("<td>");
-	writer.println("<img src=\"images/tomcat.gif\">");
-	writer.println("</td>");
-	writer.println("<td>");
-	writer.println("<h1>Sample Application Servlet</h1>");
-	writer.println("This is the output of a servlet that is part of");
-	writer.println("the Hello, World application.");
-	writer.println("</td>");
-	writer.println("</tr>");
-	writer.println("</table>");
+        writer.println("<table border=\"0\">");
+        writer.println("<tr>");
+        writer.println("<td>");
+        writer.println("<img src=\"images/tomcat.gif\">");
+        writer.println("</td>");
+        writer.println("<td>");
+        writer.println("<h1>Sample Application Servlet</h1>");
+        writer.println("This is the output of a servlet that is part of");
+        writer.println("the Hello, World application.");
+        writer.println("</td>");
+        writer.println("</tr>");
+        writer.println("</table>");
 
-	writer.println("</body>");
-	writer.println("</html>");
+        writer.println("</body>");
+        writer.println("</html>");
 
     }
 
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/web/WEB-INF/web.xml b/tomcat-uidm/webapps/docs/appdev/sample/web/WEB-INF/web.xml
index 58daf30..7fe1af0 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/web/WEB-INF/web.xml
+++ b/tomcat-uidm/webapps/docs/appdev/sample/web/WEB-INF/web.xml
@@ -22,8 +22,8 @@
 
     <display-name>Hello, World Application</display-name>
     <description>
-	This is a simple web application with a source code organization
-	based on the recommendations of the Application Developer's Guide.
+        This is a simple web application with a source code organization
+        based on the recommendations of the Application Developer's Guide.
     </description>
 
     <servlet>
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/web/images/tomcat.gif b/tomcat-uidm/webapps/docs/appdev/sample/web/images/tomcat.gif
index 32f7d80..f2aa6f8 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/web/images/tomcat.gif
+++ b/tomcat-uidm/webapps/docs/appdev/sample/web/images/tomcat.gif
Binary files differ
diff --git a/tomcat-uidm/webapps/docs/appdev/sample/web/index.html b/tomcat-uidm/webapps/docs/appdev/sample/web/index.html
index 7be5ae7..1cbcd63 100644
--- a/tomcat-uidm/webapps/docs/appdev/sample/web/index.html
+++ b/tomcat-uidm/webapps/docs/appdev/sample/web/index.html
@@ -34,10 +34,10 @@
 </tr>
 </table>
 
-<p>To prove that they work, you can execute either of the following links:
+<p>To prove that they work, you can execute either of the following links:</p>
 <ul>
-<li>To a <a href="hello.jsp">JSP page</a>.
-<li>To a <a href="hello">servlet</a>.
+<li>To a <a href="hello.jsp">JSP page</a>.</li>
+<li>To a <a href="hello">servlet</a>.</li>
 </ul>
 
 </body>
diff --git a/tomcat-uidm/webapps/docs/appdev/source.html b/tomcat-uidm/webapps/docs/appdev/source.html
index 845f7f2..cc9810f 100644
--- a/tomcat-uidm/webapps/docs/appdev/source.html
+++ b/tomcat-uidm/webapps/docs/appdev/source.html
@@ -1,19 +1,92 @@
-<html><head><META http-equiv="Content-Type" content="text/html; charset=iso-8859-1"><title>Application Developer's Guide (6.0.41) - Source Organization</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>Application Developer's Guide (7.0.77) - Source Organization</title><meta name="author" content="Craig R. McClanahan"><style type="text/css" media="print">
+    .noPrint {display: none;}
+    td#mainBody {width: 100%;}
+</style><style type="text/css">
+code {background-color:rgb(224,255,255);padding:0 0.1em;}
+code.attributeName, code.propertyName {background-color:transparent;}
+
+
+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></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Application Developer's Guide</h1><h2>Source Organization</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>
+    " 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="index.html">App Dev Guide Home</a></li><li><a href="http://wiki.apache.org/tomcat/FAQ">FAQ</a></li><li><a href="#comments_section">User Comments</a></li></ul><p><strong>Contents</strong></p><ul><li><a href="index.html">Contents</a></li><li><a href="introduction.html">Introduction</a></li><li><a href="installation.html">Installation</a></li><li><a href="deployment.html">Deployment</a></li><li><a href="source.html">Source Code</a></li><li><a href="processes.html">Processes</a></li><li><a href="sample/">Example App</a></li></ul></td><!--RIGHT SIDE MAIN BODY--><td width="80%" valign="top" align="left" id="mainBody"><h1>Source Organization</h1><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Table of Contents"><!--()--></a><a name="Table_of_Contents"><strong>Table of Contents</strong></a></font></td></tr><tr><td><blockquote>
 <ul><li><a href="#Directory_Structure">Directory Structure</a><ol><li><a href="#External_Dependencies">External Dependencies</a></li></ol></li><li><a href="#Source_Code_Control">Source Code Control</a></li><li><a href="#BUILD.XML_Configuration_File">BUILD.XML Configuration File</a></li></ul>
 </blockquote></td></tr></table><table border="0" cellspacing="0" cellpadding="2"><tr><td bgcolor="#525D76"><font color="#ffffff" face="arial,helvetica.sanserif"><a name="Directory Structure"><!--()--></a><a name="Directory_Structure"><strong>Directory Structure</strong></a></font></td></tr><tr><td><blockquote>
 
-    <blockquote><em>
-    <p>The description below uses the variable name $CATALINA_BASE to refer the
+    <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.</p>
-    </em></blockquote>
+    the directory into which you have installed Tomcat.</em></p>
 
 <p>A key recommendation of this manual is to separate the directory
 hierarchy containing your source code (described in this section) from
@@ -21,16 +94,16 @@
 (described in the preceding section).  Maintaining this separation has
 the following advantages:</p>
 <ul>
-<li>The contents of the source directories can be more easily administered,
+<li><p>The contents of the source directories can be more easily administered,
     moved, and backed up if the "executable" version of the application
     is not intermixed.
-    <br><br></li>
-<li>Source code control is easier to manage on directories that contain
+    </p></li>
+<li><p>Source code control is easier to manage on directories that contain
     only source files.
-    <br><br></li>
-<li>The files that make up an installable distribution of your
+    </p></li>
+<li><p>The files that make up an installable distribution of your
     application are much easier to select when the deployment
-    hierarchy is separate.</li>
+    hierarchy is separate.</p></li>
 </ul>
 
 <p>As we will see, the <code>ant</code> development tool makes the creation
@@ -58,8 +131,8 @@
     access those files.<br><br></li>
 <li><strong>web/WEB-INF/</strong> - The special configuration files required
     for your application, including the web application deployment descriptor
-    (<code>web.xml</code>, defined in the 
-    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification</a>), 
+    (<code>web.xml</code>, defined in the
+    <a href="http://wiki.apache.org/tomcat/Specifications">Servlet Specification</a>),
     tag library descriptors for custom tag libraries
     you have created, and other resource files you wish to include within
     your web application.  Even though this directory appears to be a
@@ -77,7 +150,7 @@
 <li><strong>build/</strong> - When you execute a default build
     (<code>ant</code>), this directory will contain an exact image
     of the files in the web application archive for this application.
-    Tomcat 6 allows you to deploy an application in an unpacked
+    Tomcat allows you to deploy an application in an unpacked
     directory like this, either by copying it to the
     <code>$CATALINA_BASE/webapps</code> directory, or by <em>installing</em>
     it via the "Manager" web application.  The latter approach is very
@@ -150,11 +223,9 @@
 easy way to tell CVS to ignore these directories is to create a file named
 <code>.cvsignore</code> (note the leading period) in your top-level source
 directory, with the following contents:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-build
+<div class="codeBox"><pre><code>build
 dist
-build.properties
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+build.properties</code></pre></div>
 
 <p>The reason for mentioning <code>build.properties</code> here will be
 explained in the <a href="processes.html">Processes</a> section.</p>
@@ -210,9 +281,7 @@
 the targets that are designed for use by the developer, versus those targets
 used internally.  To ask Ant to display the project documentation, change to
 the directory containing the <code>build.xml</code> file and type:</p>
-<div align="left"><table cellspacing="4" cellpadding="0" border="0"><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#ffffff" height="1"><pre>
-ant -projecthelp
-</pre></td><td bgcolor="#023264" width="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr><tr><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td><td bgcolor="#023264" width="1" height="1"><img src="../images/void.gif" alt="" width="1" height="1" vspace="0" hspace="0" border="0"></td></tr></table></div>
+<div class="codeBox"><pre><code>ant -projecthelp</code></pre></div>
 
 <p>To give you a head start, a <a href="build.xml.txt">basic build.xml file</a>
 is provided that you can customize and install in the project source directory
@@ -259,22 +328,22 @@
 </ul>
 
 <p>For interactive development and testing of your web application using
-Tomcat 6, the following additional targets are defined:</p>
+Tomcat, the following additional targets are defined:</p>
 <ul>
-<li><strong>install</strong> - Tell the currently running Tomcat 6 to make
+<li><strong>install</strong> - Tell the currently running Tomcat to make
     the application you are developing immediately available for execution
-    and testing.  This action does not require Tomcat 6 to be restarted, but
+    and testing.  This action does not require Tomcat to be restarted, but
     it is also not remembered after Tomcat is restarted the next time.
     <br><br></li>
 <li><strong>reload</strong> - Once the application is installed, you can
     continue to make changes and recompile using the <code>compile</code>
-    target.  Tomcat 6 will automatically recognize changes made to JSP pages,
+    target.  Tomcat will automatically recognize changes made to JSP pages,
     but not to servlet or JavaBean classes - this command will tell Tomcat
     to restart the currently installed application so that such changes are
     recognized.
     <br><br></li>
 <li><strong>remove</strong> - When you have completed your development and
-    testing activities, you can optionally tell Tomcat 6 to remove this
+    testing activities, you can optionally tell Tomcat to remove this
     application from service.
     </li>
 </ul>
@@ -282,6 +351,31 @@
 <p>Using the development and testing targets requires some additional
 one-time setup that is described on the next page.</p>
 
-</blockquote></td></tr></table></td></tr><!--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 &copy; 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&amp;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/appdev/source.html';
+              (function(w, d) {
+                  if (w.location.hostname.toLowerCase() == "tomcat.apache.org") {
+                      d.write('<div id="comments_thread"><\/div>');
+                      var s = d.createElement('script');
+                      s.type = 'text/javascript';
+                      s.async = true;
+                      s.src = 'https://comments.apache.org/show_comments.lua?site=' + comments_shortname + '&page=' + comments_identifier;
+                      (d.getElementsByTagName('head')[0] || d.getElementsByTagName('body')[0]).appendChild(s);
+                  }
+                  else {
+                      d.write('<div id="comments_thread"><strong>Comments are disabled for this page at the moment.<\/strong><\/div>');
+                  }
+              })(window, document);
+              //--><!]]></script></blockquote></td></tr></table></td></tr><!--FOOTER SEPARATOR--><tr><td colspan="2"><hr noshade size="1"></td></tr><!--PAGE FOOTER--><tr><td colspan="2"><div align="center"><font color="#525D76" size="-1"><em>
+        Copyright &copy; 1999-2017, Apache Software Foundation
         </em></font></div></td></tr></table></body></html>
\ No newline at end of file
diff --git a/tomcat-uidm/webapps/docs/appdev/web.xml.txt b/tomcat-uidm/webapps/docs/appdev/web.xml.txt
index 42555f0..6574742 100644
--- a/tomcat-uidm/webapps/docs/appdev/web.xml.txt
+++ b/tomcat-uidm/webapps/docs/appdev/web.xml.txt
@@ -16,8 +16,8 @@
   limitations under the License.
 -->
 
-<!DOCTYPE web-app 
-    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" 
+<!DOCTYPE web-app
+    PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN"
     "http://java.sun.com/dtd/web-app_2_3.dtd">
 
 <web-app>
